gpt4 book ai didi

jsonp - 在 Internet Explorer 上没有为 Ajax JSONP 调用调用回调

转载 作者:行者123 更新时间:2023-12-04 18:09:56 30 4
gpt4 key购买 nike

我正在使用 JSONP 进行 Ajax 调用以从第三方(与我的站点不同的域)获取 JSON 数据,它在 Chrome 和 Firefox 上工作但在 IE 上失败(9 和 10 是我试过的版本) .在 IE 调试器中,我看到调用正在完成(使用 Http 200),但未调用我为 JSONP 调用指定的回调。

我的代码是这样的:

$.ajax({
url: 'http://api.yipit.com/v1/deals/?key=mykey&division=seattle&limit=1000',
dataType: 'jsonp',
contentType: "text/javascript",
async: false,
cache: false,
crossDomain: true,
jsonp: 'callback',
jsonpCallback: 'processResult',
error: function (xhr, textStatus, error) {
window.alert(error);
},
success: function (data) {
window.alert(JSON.stringify(data));
_yipit_deals = data.response.deals;
}
});

响应正文如下所示:

<html><body><pre>processResult({
... [valid JSON data]
});</pre></body></html>

调用时,错误函数被调用,错误为:Error: processResult was not called并且 IE 调试器显示在尝试解析 <html><body><pre> 时导致的脚本错误响应中的标签。在 Chrome 和 Firefox 上运行时,这些 html 标记存在于响应正文中,我不确定为什么 IE 的响应不同。

这些标签似乎导致 IE 无法调用回调。我试过为 contentType 指定其他值,例如“text/html”、“text”、“application/javascript”,甚至根本不指定它,但没有任何区别。我正在使用 JSONP 来解决跨域问题。

有什么想法吗?谢谢!

最佳答案

您必须向 URL 传递一个明确的 format 参数:

&format=json

否则,它只是漂亮地打印输出:

<html><body><pre>{
"meta": {
"code": 401,
"message": "Key not recognized",
"name": "AuthenticationFailed"
},
"response": {}
}</pre></body></html>

此外,我会将 async 设置回 true

关于jsonp - 在 Internet Explorer 上没有为 Ajax JSONP 调用调用回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16659807/

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