javascript - 为什么 IE 不显示此 alert()?

标签 javascript internet-explorer xmlhttprequest alert

我有以下代码:

// 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/

相关文章:

html - 强制 Internet Explorer 9 使用标准文档模式

c++ - OLE 自动化是通过 C++ 自动化 IE 的好选择吗?

html - 难以捉摸的图标字体不适用于任何版本的 IE

xmlhttprequest - 多部分表单数据 POST 请求在 Cypress 对我来说不起作用

javascript - 如何通过 AJAX 发送 "&"(&符号)字符?

soap - 不能将 HTTPS 与 ServerXMLHTTP 对象一起使用

javascript - 如何为 JVector Map 设置背景颜色?

javascript - 使用knockoutjs显示 View 模型中的数据的更好方法?

Javascript:在字符串的第二个字符后添加整数

javascript - 将样式应用于父 div