Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery AJAX请求在IE8中失败,消息为';错误:在调用open方法之前,无法调用此方法;_Ajax_Json_Jquery_Xmlhttprequest_Ie Developer Tools - Fatal编程技术网

jQuery AJAX请求在IE8中失败,消息为';错误:在调用open方法之前,无法调用此方法;

jQuery AJAX请求在IE8中失败,消息为';错误:在调用open方法之前,无法调用此方法;,ajax,json,jquery,xmlhttprequest,ie-developer-tools,Ajax,Json,Jquery,Xmlhttprequest,Ie Developer Tools,我正在使用jQuery1.4.2并尝试执行一个简单的AJAX请求。目标URL返回一个JSON字符串(我用jslint对其进行了验证)。这个请求可以在Firefox和Chrome中使用,但不想在IE8中使用,我无法确定原因。电话如下: jQuery.ajax({ url: 'http://' + domain + '/' + 'helper/echo/', dataType: 'json', success: function(data) { alert(data); }, beforeSend

我正在使用jQuery1.4.2并尝试执行一个简单的AJAX请求。目标URL返回一个JSON字符串(我用jslint对其进行了验证)。这个请求可以在Firefox和Chrome中使用,但不想在IE8中使用,我无法确定原因。电话如下:

jQuery.ajax({
url: 'http://' + domain + '/' + 'helper/echo/',
dataType: 'json',
success: function(data) {
 alert(data);
},
beforeSend: function(request, settings) {
 alert('Beginning ' + settings.dataType + ' request: ' + settings.url);
},
complete: function(request, status) {
 alert('Request complete: ' + status);
},
error: function(request, status, error) {
 alert(error);
}
});
IE将执行beforeSend回调和错误回调。错误回调将发出警报,并显示以下消息:

Error: This method cannot be called until the open method has been called.
我的响应头返回
内容类型:text/javascript;字符集=UTF-8

你怎么了?我正在本地主机上运行服务器,向发出请求。也许IE阻止了这个请求?我已经尝试安装Fiddler来分析请求流量,但它不会在我的机器上运行,因为它已经被锁定了。萤火虫让我来,但那里一切似乎都很好


谢谢你的帮助

好吧,这是解决办法!请求使用的是
window.XMLHttpRequest()
,由于某种原因,它在IE8中无法正常工作。jQuery并没有像它应该的那样返回到
window.ActiveXObject(“Microsoft.XMLHTTP”)

在AJAX调用之前的某个地方将其添加到脚本中(仅在IE8中验证,而不是在其他IE中验证):

下面是我如何找到解决方案的:

  • 如果问题是已修复的bug,则更新为jQuery 1.4.4
  • 逐步通过Firebug调试器和DevTools调试器,直到结果看起来完全不同
  • 在第5899行,ajax()函数使用xhr()函数创建XmlHttpRequest对象。在Firefox中,它返回了良好的数据。在IE中,返回的所有字段均为
    错误:在调用open方法之前无法调用此方法。
  • 我在第5749行分析了这个函数,
    returnnewwindow.XMLHttpRequest()
  • 我在谷歌上搜索了一下,发现了同样的问题,并提出了适合我的解决方案
  • :

  • 请尝试设置
    async:false
    ,然后重试。不幸的是,这没有效果。我还应该提到错误回调状态为null。
    jQuery.ajaxSetup({
                xhr: function() {
                        //return new window.XMLHttpRequest();
                        try{
                            if(window.ActiveXObject)
                                return new window.ActiveXObject("Microsoft.XMLHTTP");
                        } catch(e) { }
    
                        return new window.XMLHttpRequest();
                    }
            });