2009-10-14 13 views
0

J'essaye de obtain a list of assets (via JSON) à l'intérieur d'une goutte en utilisant un compte gratuit drop.io.Le rappel n'est pas exécuté, bien que la requête fonctionne bien avec jQuery getJSON

Notez que j'ai déjà examiné les deux autres questions (question1 et question2) à ce sujet et aucune d'entre elles n'a fourni de solution.

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"); 
    }); 

Lorsque le bouton de recherche sur la page est cliqué ce qui déclenche la fonction GetFileList(). D'après ma console firebug, la fonction getFileList() est très bien appelée.

La requête JSON est également effectuée avec succès lorsque l'onglet Net de la console de firebug affiche un statut 200OK lorsque j'appelle assets.json sur le site de drop.io. J'ai aussi reçu le retour suivant JSON dans la liste des demandes dans l'onglet « 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"}] 

j'ai validé le bloc ci-dessus JSON retourné en utilisant JSONLint et rapporte que le JSON retourné est bien valide, vous pouvez tester ceci en copiant et en collant le bloc ci-dessus. J'ai essayé tout ce que je sais essayer, j'ai même ajouté une option "error" à la méthode $ .ajaxSetup et je n'ai toujours pas réussi à retourner même un message d'erreur indiquant pourquoi mon callback la fonction n'est pas appelée.

Une idée pourquoi ce pourrait être? Vous pouvez tester mon script. here

+0

De plus, laissez-moi vous dire que c'est hébergé sur un serveur Linux vraiment vieux d'Apache 1.3 et je me demandais juste si cela pouvait l'affecter. – leeand00

Répondre

2

JSONP requiert que le serveur prenne en charge les requêtes JSONP. Toutefois, si vous visitez

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

le document retourné ressemble [{"converted..) bien qu'il devrait ressembler à x([{"converted"..) en raison de la fonction de rappel x.

Apparemment, drop.io ne prend pas en charge JSONP (la documentation ne le dit pas non plus). La seule option qui vous reste est l'approche classique des js interdomaines: Use a Proxy.

Questions connexes