我真的很困惑。如果我在浏览器中发布以下链接,它可以正常工作,没问题,但是当我问jQuery时,它会回来,但是没有错误。
链接:
http://www.theyworkforyou.com/api/getConstituency?key=FU8MWTEQnvVsHC6GM7B82zie&postcode=BS345NT
代码:
$.ajax({
url: 'http://www.theyworkforyou.com/api/getConstituency?key=FU8MWTEQnvVsHC6GM7B82zie&postcode='+postcode+'&output=js',
type: 'POST',
success: function(response) {
console.log(response);
}
});
我可以更改密钥,所以不要担心我发布它的事实。
为什么它不起作用的任何想法?
答案 0 :(得分:2)
您的javascript正在从源服务器下载到浏览器的网页上下文中运行。它尝试从其他服务器请求页面,但这违反了same origin policy。 Javascript无法向源服务器以外的服务器发出请求。
JSONP技术可用于解决此问题,但前提是非原始服务器支持它。在该技术中,javascript代码动态地创建脚本标签,其src元素1)指向非源服务器,并且2)传递(作为查询参数)存在于本地javascript中的函数的名称。非原始服务器返回脚本的源代码,该脚本仅调用非原始服务器提供的数据上的函数。通过这种方式,javascript可以从非原始服务器请求数据。
如果非原始服务器不支持JSONP,那么您将无法按照自己的意愿行事。