2010-03-03 12 views
12

Ich versuche, eine einfache Anfrage an Wikipedia API mit AJAX (XMLHttpRequest) zu implementieren. Wenn ich die URL in die Adressleiste von Firefox eintippe, bekomme ich ein ordentliches XML, kein Problem. Rufen Sie die genaue URL dennoch mitAbfrage Wikipedia API mit AJAX (XMLHttpRequest)

// this is my XMLHttpRequest object 
httpObjectMain.open("GET", "http://en.wikipedia.org/w/api.php?action=query&format=xml&prop=langlinks&lllimit=500&titles=kaas", true); 
httpObjectMain.send(null); 

gibt eine leere Antwort zurück. Laut FireBug bekomme ich eine 200 OK-Antwort, aber der Inhalt ist nur leer.

Ich vermute, dass ich etwas auf der Kopfzeile der GET HTTP-Anfrage fehlt.

Hilfe! (und danke!)

Antwort

17

The Wikipedia API unterstützt JSONP. Ihre Anfrage string'll so etwas wie dieses werden:

http://en.wikipedia.org/w/api.php?action=query&format=json&callback=test&prop=langlinks&lllimit=500&titles=kaas 

Aber Sie werden die JSONP Handler bauen müssen (oder Sie können Ihre Lieblings-Bibliothek verwenden, es zu tun), schalten Sie auf json Ausgabeformat aus der xml Sie Wählen und erstellen Sie die Callback-Funktion, um das Ergebnis zu parsen und die benötigten Dinge auf der Seite auszuführen.

+0

Danke, das klingt wie ein zu erforschender Pfad. –

+0

Beachten Sie, dass Sie mit JSONP technisch keine XMLHttpRequest, sondern eine Skript-Injektionstechnik verwenden. –

+0

Arbeitete für mich! Das Parsen des zurückgegebenen JSON war ein weiteres Abenteuer, doch die Daten wurden gut wiedergegeben. –

-1

Der Browser erlaubt Ihnen nicht, ein XHR an eine andere Domain als die, auf der sich die Seite befindet, zu senden. Dies dient Sicherheitszwecken.

Eine Möglichkeit, die ich gesehen habe, ist, einen Proxy auf der Domäne einzurichten, auf der die Seite gehostet wird, die Anforderungen an den tatsächlichen API-Server weitergibt. Siehe http://ajaxpatterns.org/Cross-Domain_Proxy

Verwandte Themen