8
votes

Existe-t-il un moyen d'obtenir une récupération de XML de JSONP à JQUERY?

Pour un service Web, je développe que je voudrais que mon code intégré (sur le site du client) soit chercher un fichier XML à partir de mon script de sévère qui réside sur mon domaine.

Comme il s'agit d'une demande croisée, j'ai pensé à utiliser JSONP car il semble que la norme de facto pour de telles API. Cependant, pour ma demande, il serait plus facile pour moi d'utiliser XML au lieu de JSON. Maintenant, je pouvais bien sûr convertir mon XML en JSON sur le serveur, puis à nouveau sur XML dans le site du client JavaScript, mais cela semble inutilement encombrant. Ce dont j'ai vraiment besoin, c'est et une solution XMLP, XML avec rembourrage.

Je suis fatigué googling mais je n'ai pas pu trouver une solution qui fait ça. Est-ce que quelqu'un connaît une solution simple?


0 commentaires

3 Réponses :


4
votes

La seule raison pour laquelle JSON Works est dû au fait que JavaScript inclus sur votre page peut exécuter dans la fenêtre sans aucun problème X-Domain. Donc, il doit rester javascript. Cependant, vous pouvez simplement minifier le XML, assurez-vous qu'il est correctement échappé et envoyez-le comme une valeur dans un objet JSON.

echo 'callback({data: "' + xml string + '"});';


1 commentaires

Merci! Cela semble être juste le genre de solution simple que j'espérais. Je n'ai pas encore essayé, mais à l'exception de la partie qui échappe, je ne parviens pas à prévoir une difficulté.



5
votes

Vous pouvez utiliser quelque chose comme Yahoo! Langue de requête (YQL) pour vous éviter de devoir écrire un autre format de sortie pour votre fichier XML.

Par exemple, pour obtenir le flux XML pour cette question via JSON-X, vous utiliseriez une URL de requête YQL comme:

http://query.yahooapis.com/v1/public/yql?q=select%20*%20FROM%20XML%20OWT%20URL%3D%27HTTP%3A%2F%2FStackoverflow.com%2ffeeds % 2fquestion% 2f2671143% 27% 20 et% 20ImPath% 3D% 27Feed.Entry% 27 & rappel = my_jsonpx_handler

[ Essayez cette requête dans la console YQL ]

qui vous donne un résultat comme ce qui suit; efficacement le XML enveloppé dans un rappel JSON:

my_jsonpx_handler ({"Query": ..., "résultats": ["Entrée xmlns = \" http: //www.w3.org/2005/atom \ "> \ n http: //stackoverflow.com/questions/2671143/is-There-An-existing-tool-for-jsonp-Like-fetching-of-xml-in-jqueryOf-xml-in-jquery 0 <\ / re: rang> ... "]}); < / p>

Vos widgets pourraient ensuite interroger l'URL YQL pour que leurs données parlent à son tour parler au fichier XML sur votre serveur (avec la mise en cache, la vitesse, etc. comme des friandises ajoutées).


1 commentaires

Merci pour la suggestion détaillée et utile. La suggestion d'Alex semble un peu plus simple cependant, ce que j'aime beaucoup.



1
votes

AS de JQuery 1.5 Il existe une méthode utilitaire, elle a sauvé ma vie pour utiliser JSONP à charger dans XML.

var xml = "<rss version='2.0'><channel><title>RSS Title</title></channel></rss>",
xmlDoc = $.parseXML( xml ),
$xml = $( xmlDoc ),
$title = $xml.find( "title" );


3 commentaires

Merci, j'ai fini par utiliser Json après tout, mais je suis certain que votre réponse pourrait être la plus utile pour les autres.


Vous avez toujours dû envelopper la réponse XML dans un «paquet» JSONP?


Oui, vous auriez besoin de la réponse pour être emballé dans une fonction pour l'appel JSONP, mais cela illustre simplement comment analyser le contenu XML de la réponse.