Obtenez Json Array avec JS pur

Je voudrais obtenir JSON Array à partir d'un cross-domain sans utiliser JQuery. Les données provenant de domaines multiples sont comme ceci:

{ "transactionid": "LBS_48550801", "status": 0, "countrylist": [ { "id": 1, "name": "France", "latitude": 37.00039, "longitude": 35.31411, "extent": { "minlatitude": 36.53888499, "minlongitude": 34.76786904, "maxlatitude": 38.37851496, "maxlongitude": 36.40534884 }}, { "id": 2, "name": "Germany", "latitude": 37.76454, "longitude": 38.27645, "extent": { "minlatitude": 37.40771898, "minlongitude": 37.43326512, "maxlatitude": 38.21203404, "maxlongitude": 39.24767592 } }, //... .... .... //... .... .... //... .... .... { "id": 98, "name": "Belgium", "latitude": 38.75754, "longitude": 30.5387, "extent": { "minlatitude": 37.78126803, "minlongitude": 29.68963308, "maxlatitude": 39.27915099, "maxlongitude": 31.71549708 } }, { "id": 99, "name": "England", "latitude": 39.71812, "longitude": 43.03345, "extent": { "minlatitude": 38.96877501, "minlongitude": 42.28340184, "maxlatitude": 40.031208, "maxlongitude": 44.61092892 } }, ] } 

Après avoir obtenu les données, j'ai besoin de l'analyser pour obtenir la liste "Countrylist".

J'ai cherché pour résoudre ce problème, mais les exemples sont tous avec JQuery. Je ne veux pas l'utiliser. Comme vous le voyez, j'ai des paramètres de statut transactionnels dans l'entrée. Donc, après avoir importé les données, j'ai besoin de l'analyser pour obtenir la liste des listes de pays. Je sais comment analyser, mais je ne pouvais pas obtenir toutes les données du service.

Je dois obtenir les données par des méthodes Javascript. Le serveur prend en charge la récupération des données.

Les étapes à suivre sont:

1- Obtenez les données entières (voici où je me suis coincé)

2- Analysez-le comme objet Json (je sais comment analyser les données)

Comment puis-je obtenir toutes les données sans utiliser de JQuery ou d'autres bibliothèques préparées?

Vous pouvez utiliser XMLHttpRequest pour ajax et JSON.parse pour parse json 🙂

 var xmlhttp = new XMLHttpRequest(); xmlhttp.open('GET', '//example.org', true); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4) { if(xmlhttp.status == 200) { var obj = JSON.parse(xmlhttp.responseText); var countryList = obj.countrylist; } } }; xmlhttp.send(null); 

Vous ne devriez jamais utiliser eval! Eval est mauvais! Vous pouvez le lire à propos de mdn

UPD:

S'il n'y a pas d'en-tête CORS, vous pouvez utiliser JSONP. Ajoutez simplement &callback=getJSONP à votre URL. Essayez-le sur jsfiddle: http://jsfiddle.net/VmBF7/3/

Pourriez-vous essayer de télécharger les données dans un iframe caché, puis analyser le contenu de son document.body?

Puisque votre opération implique des requêtes entre domaines, je vous suggère d'utiliser la demande jsonp.

Cette question a ce que vous vouliez.

Dans mon cas, car le serveur nécessite une requête ajax ou il vous donnera un 404 (pour éviter csrf ), de sorte que, en fonction de la réponse acceptée, vous avez besoin d'une ligne supplémentaire pour compléter la version getJSON ajax comme ceci:

 <script type="application/javascript"> var request = new XMLHttpRequest(); request.open('GET', '/your/url', true); // this following line is needed to tell the server this is a ajax request request.setRequestHeader("X-Requested-With", "XMLHttpRequest"); request.onload = function () { if (this.status >= 200 && this.status < 400) { var json = JSON.parse(this.response); // this is where you can do something with the json response } }; request.send(); }); </script>