【发布时间】:2014-02-12 10:32:01
【问题描述】:
我正在尝试对外部网站(我无法控制)进行 JSON 调用以检索价目表。这是一个简单的调用:
$.ajax({
url: 'http://www.external-site.com',
type: 'GET',
contentType: 'application/json',
dataType: 'jsonp',
data: {SelectedObjectId:"742",DeliveryOptionId:"2",CountryId:"4",SelectedExtensionId:"-1"},
success: function(response) { console.log('succes: ' + response); },
error: function(response) { console.log('error: ' + response); }
});
当我查看 Chrome 开发人员工具时,我看到返回的响应包含我期望的所有信息。但是没有返回“成功”状态,而是执行了“错误”函数,当我记录响应时,我最终得到的对象似乎与我在开发人员工具中看到的 json 响应不同。如何检索和使用开发人员工具中显示的响应?我对 ajax 调用没有经验,并且做了很多搜索和尝试不同的事情,但在这种特殊情况下都没有奏效。
编辑:我删除了 JSfiddle 和外部站点的链接,以防止他们的服务器受到潜在的压力。
【问题讨论】:
-
这是一个跨域请求.. 看起来上述 API 不支持 CORS 或 jsonp
-
所以解决方案是使用您的服务器作为代理并向您的服务器发出 ajax 请求,然后从您的服务器请求远程数据并将远程请求返回的值返回给客户端
-
感谢您为我指明这个方向。很遗憾,Chrome 未能指出这个跨域问题,但这是我的问题的原因,这是有道理的。我会尝试代理方法,谢谢!
标签: javascript jquery ajax json jsonp