javascript - JSONP 请求永远不会调用成功回调

标签 javascript jquery ajax rest cross-domain

我有这个网址:https://cdn.static.wizzair.com/en-GB/TimeTableAjax?departureIATA=BUD&arrivalIATA=TLV&year=2016&month=6

它返回给我一个 json。如果我使用浏览器访问此 URL,或者如果我在浏览器 (DHC) 上使用 REST 客户端触发请求,那么它可以工作!现在,对于我来说,有一个通过 https 运行的 Express 服务器,我试图使用 jQuery 来使这个请求正常工作,但没有成功。

不知何故,即使我在网络调试中看到请求良好并看到 json 响应,错误回调仍然会被执行!

我的代码:

/// removed old code ///

$.ajax({
                method: 'GET',
                url: "https://cdn.static.wizzair.com/en-GB/TimeTableAjax?departureIATA=BUD&arrivalIATA=TLV&year=2016&month=6&callback=?",
                dataType: "jsonp",
                success: function() { console.log("success"); },
                error: function(err) { ;console.log(err); }
            });

** * 编辑 * **

所以我知道这不会起作用,因为目标不支持 jsonp。

将其更改为普通 GET 请求将收到错误并显示此消息:

XMLHttpRequest cannot load https://cdn.static.wizzair.com/en-GB/TimeTableAjax?departureIATA=BUD&arrivalIATA=TLV&year=2016&month=6. The 'Access-Control-Allow-Origin' header has a value 'https://wizzair.com' that is not equal to the supplied origin. Origin 'https://localhost:3000' is therefore not allowed access.

这是预期的。但是为什么这可以在我的浏览器和本地 REST 客户端上运行呢?我做错了什么?

谢谢!

最佳答案

您请求的 URL 返回 JSON,而不是 JSONP。

只有当服务器设计为使用 JSONP 格式的响应来响应 JSONP 请求时,JSONP 请求才有效。

如需进一步阅读,请参阅What is JSONP all about

<小时/>

关于对问题的重大编辑:请参阅 this duplicate .

关于javascript - JSONP 请求永远不会调用成功回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37252953/

相关文章:

javascript - 我们如何检测元素外的双击?

javascript - 选择当前选项卡打开的浏览器选项卡

javascript - 从模态输入字段中获取文本并将其放入表格中

javascript - 修改并显示使用D3生成的表中的缩写数据

javascript - 如何在 css 中水平包裹垂直溢出?

javascript - 使用 jquery 检查是否在不同/其他页面上选择了单选按钮

c# - 如何在asp.net Web应用程序的代码背后使用jquery

python - 简单的数据表 flask

javascript - 使用 jQuery 比较和突出显示表格数据

javascript - 在通过 Javascript 提交表单之前执行 ajax 检查