我的onReadyStateChange永远不会被调用,为什么?

时间:2012-10-26 05:30:53

标签: javascript ajax xmlhttprequest onreadystatechange

我的代码很简单。

function useXMLHttpRequest() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "test.ashx", false);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
xmlhttp.onReadyStateChange = function () {
    alert("ss");
};
xmlhttp.send("i=5");
alert(xmlhttp.responseText);

}

当我调用useXMLHttpRequest.Yes时,它会提醒xmlhttp.responseText的值。但它不警告(“ss”)。在IE9和Firefox中都有。 任何人都可以告诉我什么是故障?

2 个答案:

答案 0 :(得分:2)

JavaScript(以及我所知道的所有其他语言)区分大小写,因此onreadystatechangeonReadyStateChange不同。

请改为尝试:

xmlhttp.onreadystatechange = function() {
    alert("ss");
};

答案 1 :(得分:0)

你有

xmlhttp.open("POST", "test.ashx", false);

第三个参数是false,这意味着您正在使用同步请求。对于此类请求,onreadystatechange不起作用,不鼓励使用它。无论如何,在完成完成之前,您的请求不会更进一步,因此alert(xmlhttp.responseText);xmlhttp.send("i=5");之后立即正常工作,并且无需处理请求状态更改事件。

查看更多herehere