problème avec la réponse XML jax de jquery ajax

Voici mon code pour accéder au xml partir d’un site web

 $(document).ready(function () { $.ajax({ type: "GET", url: "http://rxnav.nlm.nih.gov/REST/Ndfrt/search?conceptName=TESTOSTERONE", dataType: "xml", success: xmlParser }); }); function xmlParser(xml) { $(xml).find("entry").each(function () { $(".entirecont").append($(this).find('inputConceptName').text()); }); } 

ça marche très bien en local quand je mets ce code en production, il me donne les ressortingctions entre domaines.

Voici le JsFiddle

Je sais que c’est une requête interdomaine, mais comment puis-je résoudre ce problème?

Merci

Avec XML, votre seule véritable option pour une vraie requête interdomaine est de savoir si ce serveur prend en charge CORS , autorise votre origine et votre navigateur le prend en charge. (S’ils ont une option JSONP , ce serait plus facile. Malheureusement, un rapide coup d’œil à leur page API a suggéré qu’ils ne prennent en charge que XML et JSON, pas JSONP. Mais cherchez vous-même, ne vous fiez pas à moi. , Je n’ai pas fait de lecture détaillée. C’est un peu étrange s’ils prennent en charge JSON mais pas JSONP, à mon avis).

Une autre option dont j’ai parfois entendu parler mais que j’ai faite consiste à utiliser YQL en tant que proxy interdomaine .

Bien sûr, vous pouvez également exécuter votre propre serveur, lui envoyer les requêtes, le faire interroger le stream rxnav.nlm.nih.gov et vous le renvoyer. Alors la SOP n’entre pas en ligne de compte

Note latérale: Pour utiliser CORS avec jQuery dans IE8 ou IE9, vous avez besoin d’un plug-in qui gère l’utilisation de l’object XDomainRequest spécial (l’object XMLHttpRequest IE8 et IE9 ne le fait pas). IE10 corrige finalement cela.

Vous ne pouvez utiliser JSONP ou JSONP dans une requête JSONP . Une demande AJAX pour extraire XML ne fonctionnera pas entre domaines

La solution de contournement consiste à créer un proxy côté serveur sur votre serveur local à l’aide du langage de votre choix, PHP / ASP.Net /, et à l’appeler via AJAX.

Vous ne pouvez pas faire de requête interdomaine via ajax (expect json).

Je vous suggère de faire une demande ajax locale et de vous connecter côté serveur au serveur interdomaine pour obtenir les données dont vous avez besoin.

Vous pouvez utiliser flxhr à partir de https://github.com/flensed/flXHR pour exécuter un appel ajax entre domaines.

Exemple de code à utiliser

 function crossDomainCall(){ var flproxy = new flensed.flXHR({ autoUpdatePlayer: true, instanceId: "myproxy1", onerror: handleError, onreadystatechange: handleCrossDomainCall }); flproxy.open("POST", url); flproxy.send(null); } function handleCrossDomainCall(XHRobj){ if (XHRobj.readyState == 4) { var xmlDoc = XHRobj.responseXML; // } }