2011-11-14 19 views
0

ユーザーにログインする際にAJAX呼び出しに問題があります。コードは次のようになります。AJAXのPOSTリクエストは非同期では動作しません

function loginUser() 
{ 
    var xmlhttp; 
    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) { 
      //alert(xmlhttp.responseText); 
      var responseString = xmlhttp.responseText; 
      if(responseString.indexOf("loginStatus:approved") != -1) { 
       document.getElementById("logInBar").innerHTML = "Welcome " + getCookie("userLoggedOnfn") + " <a href=\"logoutUser.php\">Logout</a>"; 
      } 
     } 
    } 

    var params = "loginUsername=" + document.getElementById("loginUsername").value + 
       "&loginPassword=" + document.getElementById("loginPassword").value + 
       "&d=" + new Date().getTime(); 

    //alert(params); 

    xmlhttp.open("POST", "loginUser.php", true); 
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
    xmlhttp.setRequestHeader("Content-length", params.length); 
    xmlhttp.setRequestHeader("Connection", "close"); 
    xmlhttp.send(params); 

     //alert("."); //this alert box is needed to make it work if it's asynchronous 
} 

問題は、私はこのようにそれを持っている場合、それはそのことについてはreadyStateのの== 4、または3に到達したことがないということである私が壊れた場合...それが唯一の2に取得し、 js操作がreadyState == 3に達する前にchromeのデバッガでreadyState == 4になります。同期していれば動作しますが、最後にアラートボックスを追加すれば... readyState == 4か何かに達する前に一時停止する必要があります...だから私は間違っているのですか?

はところで、私は...それは学校の割り当てなので、純粋なAJAXでこれを行う必要があり

+0

Firefoxで試してみると、ChromeはローカルのAJAXが好きではありません。 – Ben

+0

は既にそれを試しました... – Mockarutan

+0

私はローカルのAjaxリクエストを常にクロムで作成しています。ファイル、OTOH、そうではありません。 –

答えて

0

コンソールから

を働く!それはhtmlコードにあった。

私がログインしていたが、フォームタグ内のテキストボックスと、フォームタグ内のボタンを押したときにクロムが自動的にページ全体をリフレッシュします。 AJAXの呼び出しは、ページの再読み込みのためにうんざりしていました。

フォームタグを削除しただけで問題は解決しました。

0

+ getCookie(「userLoggedOnfn」)内のquotasは+「のためにそれができる; getCookie(\"userLoggedOnfn\")を脱出し、それを参照してください私は問題を発見

Refused to set unsafe header "Content-length" 
    Refused to set unsafe header "Connection" 
+0

しかしthats js code?ドリームウィーバーでさえ悪いと思う... – Mockarutan

関連する問題