2010-03-03 13 views
12

J'essaie d'implémenter une simple requête à l'API de Wikipedia en utilisant AJAX (XMLHttpRequest). Si je tape l'URL dans la barre d'adresse de Firefox, j'obtiens un XML soigné, pas de sueur là. Pourtant, en appelant exactement le même URL avec:Interroger l'API de Wikipedia en utilisant 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); 

renvoie une réponse vide. Selon FireBug, j'obtiens une réponse de 200 OK, mais le contenu est juste vide.

Je suppose que je pourrais manquer quelque chose sur l'en-tête de la requête HTTP GET.

Aide! (et merci!)

Répondre

17

The Wikipedia API prend en charge JSONP. Votre requête string'll devenir quelque chose comme ceci:

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

Mais vous devrez construire le gestionnaire jsonp (ou vous pouvez utiliser votre bibliothèque préférée pour le faire), passer à JSON format de sortie du XML choisissez et créez la fonction de rappel pour analyser le résultat et faire les choses dont vous avez besoin sur la page.

+0

Merci, cela ressemble à un chemin à explorer. –

+0

Gardez à l'esprit qu'avec JSONP, techniquement, vous n'utilisez pas XMLHttpRequest mais une technique d'injection de script. –

+0

A travaillé pour moi! L'analyse du fichier JSON renvoyé a été une autre aventure, mais les données ont été renvoyées correctement. –

-1

Le navigateur ne vous permettra pas d'envoyer un XHR vers un autre domaine que celui sur lequel se trouve la page. C'est pour des raisons de sécurité. Un moyen de contourner ce que j'ai vu est d'installer un proxy sur le domaine de la page est hébergée sur ce qui transmettra les demandes à travers le serveur API réelle. Voir http://ajaxpatterns.org/Cross-Domain_Proxy