4 Stimmen

JQuery getJSON-Anforderung liefert bei einer gültigen Anfrage leer zurück

Ich versuche, JSON von Apples iTunes JSON-Dienst abzurufen. Die Anfrage ist einfach: http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/wa/wsSearch?term=jac&limit=25

Wenn Sie die URL in Ihrem Browser besuchen, sehen Sie JSON, das gut strukturiert ist (über jsonlint.com verifiziert). Wenn ich jedoch folgendes jQuery verwende, um die Anfrage zu stellen, findet die Anfrage jedoch nichts:

        $("#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 += '' + j.results[i].artistName + ' - ' + j.results[i].trackName + '';
                }
                $("#track_id").html(options);
            });
        });

Firebug sieht die Anfrage, erhält jedoch nur eine leere Antwort.

Jede Hilfe wäre hier willkommen, da ich am Ende bin, es zu lösen. Sie können das Skript hier anzeigen: http://rnmtest.co.uk/gd/drives_admin/add_drive (Das Soundtrack-Eingabefeld befindet sich am Ende der Seite).

Danke

7voto

jitter Punkte 52721

Oder Sie ändern einfach die URL ein wenig. Von

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

zu

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

Und weiterhin $.getJSON verwenden, anstatt zu $.ajax zu wechseln

Aus der jQuery.getJSON Dokumentation

Wenn die URL den String "callback=?" enthält, wird die Anfrage als JSONP behandelt.

4voto

gnarf Punkte 103284

Um Cross-Domain-Anfragen durchzuführen, müssen Sie JSONP verwenden. Das könnte helfen:

$.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 += '' + j.results[i].artistName + ' - ' + j.results[i].trackName + '';
    }
    $("#track_id").html(options);
  }
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X