gpt4 book ai didi

ajax - jQuery AJAX 请求在 IE8 中失败,并显示消息 'Error: This method cannot be called until the open method has been called.'

转载 作者:行者123 更新时间:2023-12-03 22:45:51 25 4
gpt4 key购买 nike

我正在使用 jQuery 1.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回调。错误回调会发出以下消息警报:

Error: This method cannot be called until the open method has been called.

我的响应 header 返回 Content-Type: text/javascript; charset=UTF-8 .

IE 出了什么问题?我正在本地主机上运行服务器,从 http://localhost:8080/psx 发出请求至 http://localhost:8080/helper 。也许 IE 阻止了这个请求?我尝试安装 Fiddler 来分析请求流量,但它无法在我的计算机上运行,​​因为它已被锁定。 Firebug 让我这么做,但那里一切似乎都很好。

感谢您的帮助!!!

最佳答案

好的,解决方法如下!该请求使用了 window.XMLHttpRequest(),由于某种原因,该请求在 IE8 中无法正常工作。 jQuery 不会像它应该的那样故障返回到 window.ActiveXObject("Microsoft.XMLHTTP")

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

jQuery.ajaxSetup({
xhr: function() {
//return new window.XMLHttpRequest();
try{
if(window.ActiveXObject)
return new window.ActiveXObject("Microsoft.XMLHTTP");
} catch(e) { }

return new window.XMLHttpRequest();
}
});

以下是我找到解决方案的方法:

  1. 更新至 jQuery 1.4.4,以防问题已修复。
  2. 单步调试 Firebug 调试器和 DevTools 调试器,直到结果看起来截然不同。
  3. 在第 5899 行,ajax() 函数使用 xhr() 函数创建 XmlHttpRequest 对象。在 Firefox 中,它返回了良好的数据。在 IE 中,返回时所有字段均为错误:调用 open 方法之前无法调用此方法。
  4. 我在第5749行分析了这个函数,return new window.XMLHttpRequest();
  5. 我用谷歌搜索并发现了这个page有同样的问题并提出了适合我的解决方案。
  6. Official jQuery ticket :

关于ajax - jQuery AJAX 请求在 IE8 中失败,并显示消息 'Error: This method cannot be called until the open method has been called.',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4557532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com