2011-01-17 17 views
0

私はPHPスクリプトにGETリクエストを送信し、スクリプトから出力が返されたかどうかを確認する関数を持っています。それは素晴らしいですが、何か類似のものをチェックする別の関数を追加しようとすると、どちらも失敗します。私は何が欠けていますか?この機能を追加するときJavascript AJAX関数が正常に動作しない

function checkUsername(usr,n) { 
     var user = usr.val(), xmlhttp; 

     //var str = document.getElementById('email').value; 
     if (window.XMLHttpRequest) 
      {// code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp=new XMLHttpRequest(); 
      } 
     else 
      {// code for IE6, IE5 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
     xmlhttp.onreadystatechange=function() 
      { 
      if (xmlhttp.readyState==4 && xmlhttp.status==200) 
      { 
      //document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
       if (xmlhttp.responseText != "") { 
        usr.addClass("ui-state-error"); 
        updateTips(n); 
        return false; 
       } 
       else { 
        return true; 
       } 
      } 
      } 
     xmlhttp.open("GET","ajaxValidate.php?type=user&q="+user,true); 
     xmlhttp.send(); 

    } 

完全に上記作品、それらのどれも動作しません:

function checkEmail(em,n) { 
     var email = em.val(), xmlhttp; 

     //var str = document.getElementById('email').value; 
     if (window.XMLHttpRequest) 
      {// code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp=new XMLHttpRequest(); 
      } 
     else 
      {// code for IE6, IE5 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
     xmlhttp.onreadystatechange=function() 
      { 
      if (xmlhttp.readyState==4 && xmlhttp.status==200) 
      { 
      //document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
       if (xmlhttp.responseText != "") { 
        em.addClass("ui-state-error"); 
        updateTips(n); 
        return false; 
       } 
       else { 
        return true; 
       } 
      } 
      } 
     xmlhttp.open("GET","ajaxValidate.php?type=email&q="+email,true); 
     xmlhttp.send(); 
    } 
+0

なぜ '.val()'ですか?それはjQueryオブジェクトですか?そうでなければ '.value'でなければなりません。一番上のものとやや一貫していても、私はただ明確にしたいだけです。 –

+0

申し訳ありませんが、それはjQueryオブジェクトです。 –

+6

あなたのコードで '.val()'と '.addClass()'を使用しています - それらはjQuery関数とよく似ています - なぜjQuery ajaxを使用しないのですか?良い質問は –

答えて

0

を両方の機能では、最初の行はなりましょう:

var xmlhttp; 
+0

今すぐ試してみると、うまくいきません。 –

+0

@Or W:私はそれを持っていると思います:) –

+0

それは問題を解決していますが、それは助けになります。 checkUsername()関数の呼び出しをコメントアウトすると、checkEmail()関数が機能します。それ以外の場合は動作しません。 –

0

には、次の試してみてください。

function createRequestObject() { 
     var xmlhttp=null; 
     if (window.XMLHttpRequest) { 
      xmlhttp=new XMLHttpRequest(); 
     } else { 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     return xmlhttp; 
    } 

function checkUsername(usr,n) { 
    var user = usr.val(); 
    var xmlhttp = createRequestObject(); 
    xmlhttp.onreadystatechange = function() { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
     if (xmlhttp.responseText != "") { 
      usr.addClass("ui-state-error"); 
      updateTips(n); 
      return false; 
     } else { 
      return true; 
     } 
     } 
    } 
    xmlhttp.open("GET","ajaxValidate.php?type=user&q="+user,true); 
    xmlhttp.send(); 
} 

function checkEmail(em,n) { 
    var email = em.val(); 
    var xmlhttp = createRequestObject(); 
    xmlhttp.onreadystatechange = function() { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
      if (xmlhttp.responseText != "") { 
      em.addClass("ui-state-error"); 
      updateTips(n); 
      return false; 
      } else { 
      return true; 
      } 
     } 
    } 
    xmlhttp.open("GET","ajaxValidate.php?type=email&q="+email,true); 
    xmlhttp.send(); 
} 
関連する問題