【问题标题】:jQuery Ajax RestAPI Cross-domainjQuery Ajax RestAPI 跨域
【发布时间】:2023-03-30 01:15:02
【问题描述】:

我花了一天的时间阅读上述主题,但我无法使这段代码工作。 有人可以帮我完成这项工作吗?

$(document).ready(function(){
     var url = "http://phisix-api.appspot.com/stocks/BDO.json?jsoncallback=?";

     $.getJSON( url).done(function( data ) {
          alert('done'); // i have codes here to manipulate the return
      }).error(function( data ) {
          alert('error');
          console.log(data);
      });     
});

(您可以测试 url,它的 100% 工作。但我的代码不是 :() 提前致谢。

【问题讨论】:

  • 您的服务未返回 JSONP。在它开始返回 jsonp 之前,您无能为力。

标签: jquery ajax json cross-domain jsonp


【解决方案1】:

由于您试图获取发送回调名称的 jsonp 响应,因此您需要返回类似

的内容
mycallback({"stock":[
   {"name":"Banco de Oro",
    "price":{"currency":"PHP","amount":83.8},
    "percent_change":0.24,
    "volume":2100730,
    "symbol":"BDO"}],
    "as_of":"2014-03-17T15:46:00+08:00"}) 

否则将是正常的 JSON 响应。

因为您需要将 JSONP 包装在对 this 示例之类的函数的调用中。

使用这样的东西,一旦你返回一个包装好的响应,它就会起作用

$.ajax({
    url: 'http://phisix-api.appspot.com/stocks/BDO.json?callback=?',
    dataType: 'JSONP',
    type: 'GET',
    success: function (data) {
        console.log(data);
    }
});

看看这个对 flick 服务执行 JSONP 请求的小提琴。

Fiddle(更新)

【讨论】:

  • 使用 jquery 时不需要回答的最后一部分。只需将callback=mycallback 替换为callback=? jquery 将为您定义回调。
  • 函数是哪一个?
  • 是的。如果你用这种方式定义一个函数并使用dataType JSONP,jquery永远不会调用成功函数。
  • 这样就不需要创建函数了,jquery会为其添加一个吗?
  • 是的,假设服务读取“回调”url参数。如果 mycallback 被硬编码到服务中,那么您需要使用 jsonpcallback 选项。
猜你喜欢
  • 2011-03-31
  • 2013-06-04
  • 2015-10-06
  • 2011-07-03
  • 2011-12-30
  • 2013-04-04
  • 2011-07-05
  • 2011-11-06
相关资源
最近更新 更多