2013-03-23 192 views
1

好的...所以我的代码非常简单。唯一的问题是被调用onreadystatechange的函数永远不会被执行。我放入一个警报来显示readyState和分别显示为1和0的xmlhttp的状态。我不明白为什么国家没有改变。另外我确实知道一切正常。我在警报框中显示我从窗体中获取的用户名......它正确显示。请帮我在这里....我只是不明白这一点...onreadystatechange函数永远不会被调用

function checkAvailability() { 
    var xmlhttp; 
    if (window.XMLHttpRequest) { 
     xmlhttp = new XMLHttpRequest(); 
    } else { 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    if (xmlhttp) { 
     var regform = document.getElementById("regform"); 
     var username = regform.username.value; 
     xmlhttp.open("POST", "http://localhost:8080/UsernameAvailability", true); 
     xmlhttp.onreadystatechange = function() { 
      alert(xyz); 
     } 
     xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
     xmlhttp.send("username=" + username.value); 
    } 
} 
+1

你有意构建你自己的ajax函数库吗?如果是这样,那很酷,但如果您只需要获得Ajax功能并继续工作,请查看jquery.com。 – 2013-03-23 14:36:50

回答

3

你需要切换的xmlhttp.onreadystatechangexmlhttp.open调用为了确保onreadystatechange回调开幕前注册。

xmlhttp.onreadystatechange = function() { 
    alert(xyz); 
}; 
xmlhttp.open("POST", "http://localhost:8080/UsernameAvailability", true); 
+0

好吧...所以现在我只是分开它,并创建另一个函数被称为onreadystatechange和惊喜!警报工作。但我的工作并没有结束......当readyState == 4和状态== 200以及这些条件没有得到满足时,我需要做一些处理。 readyState和状态的值只是1和0 ... – rashmi1412 2013-03-23 15:04:00

相关问题