2009-10-14 8 views
0

Я пытаюсь сделать obtain a list of assets (через JSON) внутри капли с помощью бесплатной учетной записи drop.io.Обратный звонок не выполняется, хотя запрос отлично работает с jQuery getJSON

Обратите внимание, что я уже рассмотрел два других вопроса (question1 и question2) относительно этого, и ни один из них не предоставил решение.

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(). Согласно моей консоли firebug функция getFileList() называется просто отлично.

Запрос JSON также выполнен успешно, так как вкладка Net консоли консоли Firebug отображает статус 200OK, когда я вызываю asset.json на сайт drop.io. Я также получить следующее возвращение JSON в списке запросов в «Net» вкладки:

[{"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"}] 

Я проверенную вышеупомянутый блок возвращенного JSON с помощью JSONLint и сообщает, что JSON вернулся действительно действует, вы можете проверить это путем копирования и вставки блока выше.

Я пробовал все, что умею, я даже добавил параметр «ошибка» к методу $ .ajaxSetup, и я все еще не имел никакого успеха, возвращая даже сообщение об ошибке, почему мой обратный вызов функция не вызывается.

Любая идея, почему это может быть? Вы можете проверить мой сценарий here

+0

Кроме того, позвольте мне сказать, что это размещено на действительно старом Linux-сервере Apache 1.3, и мне просто интересно, может ли это повлиять на него. – leeand00

ответ

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.