【问题标题】:How to parse response from this jsonp call (jquery)如何解析来自这个 jsonp 调用的响应(jquery)
【发布时间】: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


【解决方案1】:

感谢上面的 Arun P Johny 的 cmets,我能够通过向我的服务器上的一个简单 proxy.php 发出 ajax 请求来解决这个问题,它反过来会获取外部站点并返回我需要的数据。

我使用本教程了解如何设置它:http://blog.edwards-research.com/2012/10/cross-domain-ajax-a-simple-workaround/

【讨论】:

    猜你喜欢
    • 2017-03-10
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 2022-06-11
    相关资源
    最近更新 更多