跨域jQuery

跨域jQuery,jquery,ajax,json,cross-domain,jsonp,Jquery,Ajax,Json,Cross Domain,Jsonp,我花了一天的时间来阅读上述主题,但我无法让这段代码正常工作。 有人能帮我做这项工作吗 $(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 man

我花了一天的时间来阅读上述主题,但我无法让这段代码正常工作。 有人能帮我做这项工作吗

$(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响应,所以需要返回如下内容

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封装在对类似示例的函数的调用中

使用类似这样的方法,一旦返回包装响应,它就会工作

$.ajax({
    url: 'http://phisix-api.appspot.com/stocks/BDO.json?callback=?',
    dataType: 'JSONP',
    type: 'GET',
    success: function (data) {
        console.log(data);
    }
});
看看这把小提琴,它向flick服务发出JSONP请求


(更新)

使用jquery时不需要回答的最后一部分。只需将
callback=mycallback
替换为
callback=?
jquery将为您定义回调。函数的哪一个?是的。如果您以这种方式定义函数并使用数据类型JSONP,jquery将永远不会调用success函数。因此,这样做没有必要需要创建函数并简单地为其添加一个函数吗?是的,假设服务读取“callback”url参数。如果mycallback改为硬编码到服务中,那么您需要使用jsonpcallback选项。您的服务不会返回JSONP。在它开始返回JSONP之前,您无能为力。