2009-10-14 34 views
0

我想通过obtain a list of assets(通过JSON)使用免费的drop.io账户下降。回调没有被执行,虽然请求工作正常与jQuery getJSON

请注意,我已经看过其他两个问题(question1question2),并没有提供解决方案。

var dropName = escape("greganddonny"); 
      var apiKey = "some key I'm not displaying it here..."; 
      var version = "2.0"; 

    var assetsListBaseURL = "http://api.drop.io/drops/greganddonny/assets.json?api_key=" + apiKey + "&version=" + version; 

    var resultingdata = null; 

    function getFileList() { 
     console.log("BEGIN: getFileList()"); 
     var surl = assetsListBaseURL + '&callback=?'; 

     $.getJSON(surl, function(data, textStatus) { 
      console.log("textStatus:" + textStatus); 
      console.log("BEGIN: Callback()"); 
      resultingdata = data; 
      showResult(); 
      console.log("END: Callback()"); 
    }); 

     console.log("END: getFileList()"); 
    } 

    function showResult() 
    { 
     alert(resultingdata); 
    } 

    $(document).ready(function() { 
     console.log("BEGIN: document.ready"); 
      $.ajaxSetup({ 
      "error": function(XMLHttpRequest,textStatus, errorThrown) { 
       alert(textStatus); 
       alert(errorThrown); 
       alert(XMLHttpRequest.responseText); 
       } 
      }) 

      $("#search").click(function() {getFileList();}); 
     console.log("END: document.ready"); 
    }); 

当点击页面上的搜索按钮时,会触发getFileList()函数。根据我的萤火虫控制台,getFileList()函数被调用就好了。

由于当我在drop.io的站点上调用assets.json时,萤火虫控制台的Net标签显示200OK状态,所以JSON请求也成功。我也收到“网络”选项卡中的请求列表以下返回JSON:

[{"converted":"http:\/\/drop.io\/download\/public\/x0yfnmzdtet1vtxesqcm\/12a9ebc74c9a3e4e3b2e2b4ea3546b919a2519ff\/df43d2b0-926f-012c-26c2-fbe072d62af6\/2a0a5270-9270-012c-8fc9-fbfd417303a8\/v2\/content","type":"audio","status":"converted","title":"MikeAndAndyOnPhone2009.MP3","duration":118,"artist":"Unknown","created_at":"2009/10/03 17:29:02 +0000","filesize":1895424,"description":null,"track_title":"Unknown","hidden_url":"http:\/\/drop.io\/hidden\/sazpcf7522exzb\/asset\/bWlrZWFuZGFuZHlvbnBob25lMjAwOS1tcDM=","name":"mikeandandyonphone2009-mp3"}] 

我使用JSONLint验证返回的JSON的上述区块并报告了JSON返回确实是有效的,你可以测试这通过复制和粘贴上面的块。

我试过所有我知道如何尝试,我甚至为$ .ajaxSetup方法添加了一个“错误”选项,我仍然没有任何成功返回甚至错误消息,为什么我的回调函数没有被调用。

任何想法,为什么这可能是?您可以测试我的脚本here

+0

此外,让我声明这是托管在一个Apache 1.3真正旧的Linux服务器上,我只是想知道这是否会影响它。 – leeand00 2009-10-14 15:33:11

回答

2

JSONP要求服务器支持JSONP请求。但是,如果你访问

http://api.drop.io/drops/greganddonny/assets.json?api_key=API_KEY_HERE&version=2.0&callback=x 

文档返回貌似[{"converted..)虽然它看起来应该像x([{"converted"..)因为x回调。

显然drop.io不支持JSONP(文档不会这样说)。唯一留给你的选择是跨域js的经典方法:Use a Proxy