ユーザーにログインする際に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でこれを行う必要があり
Firefoxで試してみると、ChromeはローカルのAJAXが好きではありません。 – Ben
は既にそれを試しました... – Mockarutan
私はローカルのAjaxリクエストを常にクロムで作成しています。ファイル、OTOH、そうではありません。 –