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; // } }