Pas de réponse de MediaWiki API à l'aide de jQuery
J'ai essayé d'obtenir le contenu de Wikipédia en JSON:
$.getJSON("http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&titles="+title+"&format=json", function(data) {
doSomethingWith(data);
});
Mais je n'ai rien obtenu de réponse. Si je coller de la barre d'adresse du navigateur, quelque chose comme
http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&titles=jQuery&format=json
- Je obtenir le contenu. Quel est le problème?
OriginalL'auteur diazath | 2010-10-06
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de déclencher JSONP comportement avec
$.getJSON()
en ajoutant&callback=?
dans la chaîne de requête, comme ceci:Vous pouvez le tester ici.
Sans l'aide de JSONP vous frappez la de même la politique de l'origine qui est le blocage de la XmlHttpRequest d'obtenir des données en retour.
J'ai été le tester cela pendant des heures en se demandant pourquoi il n'a pas de travail, même si jsonlint.com dit que ses une demande valide. Merci!
Cela ne fonctionne pas plus. C'est la seule façon que j'ai trouvée à la recherche sur Wikipédia: jsfiddle.net/tqeL3od2
OriginalL'auteur Nick Craver
Que l'autre répond point, vous faites une demande de domaines.
La réponse qui fonctionne maintenant et qu'ils ont tous deux donné est d'utiliser
JSONP
au lieu deJSON
, mais il y a une autre réponse appeléCORS
Cross-origin resource sharing.Cependant, même si la SCRO est pris en charge par MediaWiki, il n'est pas encore activé sur Wikipédia en raison des subtilités entre elle et comment Wikipédia fonctionne la mise en cache.
Il y a un rapport de bug pour le faire fonctionner dans Wikipedia: Activer $wgCrossSiteAJAXdomains pour les sites wikimédia.
Une fois que cela est résolu, vous serez en mesure de faire de la croix-domaine de requêtes AJAX à Wikipédia sans avoir besoin de JSONP de navigateurs qui supportent la SCRO. Les dernières versions de tous les principaux navigateurs prennent désormais en charge de la SCRO. Pour Internet Explorer qui signifie que la version 10 qui pas beaucoup de gens sont en cours d'exécution. La Version 9 est une solution alternative appelée xdomainrequest qui n'est pas gagner beaucoup de popularité.
OriginalL'auteur hippietrail
Vous aurez besoin d'utiliser
getJSONP
si votre obtenir des données à partir d'un autre domaine, il fait partie de la "même la politique de l'origine".MODIFIER
En fait ce que Nick a dit, claque
&callback=?
sur la fin de votre chaîne de requête d'invoquergetJSONP
.$.getJSONP()
🙂Ouais j'ai juste pensé que, édité 🙂 merci
OriginalL'auteur Ben Everard