我有以下代码:
// setup the AJAX request
var pageRequest = false;
if(window.XMLHttpRequest) pageRequest = new XMLHttpRequest();
else if(window.ActiveXObject) pageRequest = new ActiveXObject("Microsoft.XMLHTTP");
// callback
pageRequest.onreadystatechange = function() {
alert('pageRequest.readyState: ' + pageRequest.readyState
+ '\npageRequest.status: ' + pageRequest.status);
}
pageRequest.open('POST','ajax.php',true);
// q_str contains something like 'data=value...'
pageRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
pageRequest.setRequestHeader("Content-length", q_str.length);
pageRequest.setRequestHeader("Connection", "close");
pageRequest.send(q_str);
这在 Chrome 中运行良好,但 IE 会卡住,吐出“未指定的错误”。它指向其中包含 alert() 的行。为什么它不能显示警报?
编辑:好的,在我关闭错误对话框后,我收到了预期的三个警报....
编辑:现在真的越来越奇怪了。如果我改变
alert('pageRequest.readyState: ' + pageRequest.readyState
+ '\npageRequest.status: ' + pageRequest.status);
到
alert('pageRequest.readyState: ' + pageRequest.readyState);
然后它起作用了,我收到了 5 个警报。 (1,1,2,3,4)
最佳答案
Status 是前两次调用该方法时的 HTTP 响应,您会返回 1 和 1 作为 readyState。 readyState 1 表示 "The object has been created, but the send method has not been called." .那时服务器没有状态响应,因为它没有收到任何请求,因此在您的警报中使用状态会给您一个错误。
关于javascript - 为什么 IE 不显示此 alert()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2451042/