2010-03-15 4 views
4

J'essaie d'obtenir un fichier JSON du service iTunes JSON d'Apple. La demande est simple: http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/wa/wsSearch?term=jac&limit=25Demande jQuery getJSON renvoyant vide sur une demande valide

Si vous visitez l'URL de votre navigateur, vous verrez un fichier JSON bien formaté (sauvegardé par jsonlint.com). Lorsque j'utilise le jQuery suivant pour en faire la demande, toutefois, la demande ne trouve rien:

 $("#soundtrack").keypress(function(){ 
      $.getJSON("http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/wa/wsSearch",{'term':$(this).val(), 'limit':'25'}, function(j){    
       var options = ''; 
       for (var i = 0; i < j.results.length; i++) { 
        options += '<option value="' + j.results[i].trackId + '">' + j.results[i].artistName + ' - ' + j.results[i].trackName + '</option>'; 
       } 
       $("#track_id").html(options); 
      }); 
     }); 

Firebug voit la demande, mais ne reçoit qu'une réponse vide.

Toute aide serait appréciée ici, car je suis à la fin de ma tentative pour la résoudre. Vous pouvez voir le script ici: http://rnmtest.co.uk/gd/drives_admin/add_drive (la zone de saisie de la piste sonore se trouve en bas de la page).

Merci

Répondre

4

Pour faire des demandes inter-domaines, vous allez avoir besoin d'utiliser JSONP. Cela peut aider:

$.ajax({ 
    url: "http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/wa/wsSearch", 
    dataType: 'jsonp', 
    data: {'term':$(this).val(), 'limit':'25'}, 
    success: function(j){    
    var options = ''; 
    for (var i = 0; i < j.results.length; i++) { 
     options += '<option value="' + j.results[i].trackId + '">' + j.results[i].artistName + ' - ' + j.results[i].trackName + '</option>'; 
    } 
    $("#track_id").html(options); 
    } 
}); 
+0

Cela a fonctionné un régal, merci :) – Mike

7

Ou vous simplement changer l'URL un peu. De

http://ax.phobos.apple.com.edgesuite.net/.../wa/wsSearch" 

à

http://ax.phobos.apple.com.edgesuite.net/.../wa/wsSearch?callback=?" 

et continuer à utiliser $.getJSON au lieu de passer à $.ajax

De l'jQuery.getJSON documentation

Si l'URL comprend la chaîne "callback=?" dans l'URL, la demande est traité comme JSONP à la place.

+1

thx. Mais je suis sûr que tout le monde sait que les autres fonctions utilisent simplement $ .ajax dans le fond. Mais je préfère la lisibilité améliorée lors de l'utilisation des fonctions "raccourcis". De cette façon, je n'ai pas besoin de scanner l'ensemble des options pour savoir ce qui se passe. – jitter

Questions connexes