1

好的...所以我的代码很简单。唯一的问题是要调用的函数 onreadystatechange 永远不会被执行。我输入了一个警报来显示 readyState 和 xmlhttp 的状态,分别显示为 1 和 0。我不明白为什么状态没有改变。我也确实知道其他一切正常。我放入警告框以显示我从表单中获取的用户名......它正确显示它。请在这里帮我....我只是想不通...

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);
    }
}
4

1 回答 1

4

您需要切换 和 的调用顺序,xmlhttp.onreadystatechangexmlhttp.open确保onreadystatechange在打开之前注册回调。

xmlhttp.onreadystatechange = function() {
  alert(xyz);
};
xmlhttp.open("POST", "http://localhost:8080/UsernameAvailability", true);
于 2013-03-23T14:40:01.067 回答