1

我真的很困惑。如果我将以下链接发布到浏览器中,它可以工作,没问题,但是当我要求 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);
   }
});

我可以更改密钥,所以不要担心我发布它的事实。

任何想法为什么它不起作用?

4

1 回答 1

2

您的 javascript 在从源服务器下载到浏览器的网页的上下文中运行。它尝试从不同的服务器请求页面,但这违反了同源策略。Javascript 不能向源服务器以外的服务器发出请求。

JSONP技术可以用来解决这个问题,但前提是非源服务器支持它。在这种技术中,javascript 代码动态创建一个脚本标签,其 src 元素 1) 指向非源服务器,2) 传递(作为查询参数)存在于本地 javascript 中的函数的名称。非源服务器返回一个脚本的源代码,该脚本仅对非源服务器提供的数据调用函数。通过这种方式,javascript 可以从非源服务器请求数据。

如果非源服务器不支持 JSONP,那么你将无法为所欲为。

于 2013-01-11T00:07:52.150 回答