2011-11-14 195 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

我一直在chrome中製作本地的Ajax請求,它會去本地服務器,應該可以正常工作。檔案,OTOH,不是很多。 –

回答

0

我發現這個問題!這是在HTML代碼。

我登錄,但噸和文本框內的表單標籤,當我按下表單標籤內的按鈕時,Chrome會自動刷新整個頁面。因此,由於重新加載頁面,AJAX調用被搞砸了。

我剛剛刪除了表單標籤,問題就解決了。

0

這可能是因爲+的getCookie(「userLoggedOnfn」)內的quotas +「;逃getCookie(\"userLoggedOnfn\"),看它工作

從控制檯

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

但這就是JS代碼?即使Dreamweaver認爲這是不好的... – Mockarutan