gpt4 book ai didi

javascript - IE9 JQuery.ajax 抛出神秘错误

转载 作者:行者123 更新时间:2023-11-30 09:01:54 27 4
gpt4 key购买 nike

我在 IE9 中遇到了一个棘手的 ajax 错误。我会预先说明这在技术上不是跨域请求,所以我确定这不是问题所在。

编辑:问题似乎与同域请求被视为跨域有关,但原因尚不清楚(请参阅评论)。

我正在使用本地代理进行跨域 ajax 请求,我使用的 url 看起来像 http://localhost/proxy/?target=..... 很好浏览器对此很满意,但 IE 在发送请求之前立即返回错误(我已经使用 Fiddler 和 IE 的开发人员工具网络捕获验证了这一点)。

当我检查传递给 JQuery 的 ajax.error 回调的错误对象时,它的 isRejected() 函数返回 true,但我找不到导致请求被拒绝的原因。错误对象的readyState为4(表示请求完成?),status为0,statusText为“error”。

我的请求有点像这样:

$.ajax(url, {
data: {...list of parameters...},
dataType: 'json',
type: 'GET',
success: function() { ... },
error: function() { ... },
beforeSend: proxy.beforeRequestSend,
timeout: 35000
});

proxy.beforeRequestSend 函数如下所示:

this.beforeRequestSend = function(XHR, settings) {

if(that.proxyRequired(settings.url)) {
// I've also tried using the full url (http://localhost/proxy/?...)
settings.url = 'proxy/?target=' + encodeURIComponent(settings.url);
}
};

有谁知道什么会导致请求在 IE9 中完全失败?不幸的是,我无法访问 IE8 或 7 进行测试,但我认为它们的行为是一样的。调用 JQuery 的 ajax 错误处理程序这一事实表明错误不是在我构建请求时发生的,而是在它应该被执行时发生的。所有其他正常工作的浏览器告诉我基本原理是正确的。

我之前读过 JQuery/IE 组合有一些字符的 url 编码问题,但是如果我在 beforeSend 函数末尾提醒 settings.url 目标 URL 被正确编码(这还告诉我 that.proxyRequired(settings.url) 返回 true)。

非常感谢任何输入。

最佳答案

在您的 javascript 中,在您调用 $.ajax(或等效的)强制跨域行为之前:

JQuery.support.cors=true;

关于javascript - IE9 JQuery.ajax 抛出神秘错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8582409/

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