Passage de JSON du serveur (.NET) au client (jQuery)

J’essaie de charger JSON à partir de l’URL ci-dessous:

https://acs.leagueoflegends.com/v1/stats/game/TRLH3/1001090170/timeline?gameHash=a23ccbe7928a63a3

Mon code ressemble à ceci:

var baseUrl = "https://acs.leagueoflegends.com/v1/stats/game/TRLH3/1001440043/timeline?gameHash=4725b07311676885"; var json = $.getJSON(baseUrl, function(data){ }); $("#output").text(JSON.ssortingngify(json)); 

Et ma sortie lit ceci:

 {"readyState":1} 

Jsfiddle:

https://jsfiddle.net/6Lwjpjmo/

EDIT : Apparemment, il n’est pas possible de récupérer le JSON à partir de cette URL pour deux raisons:

  1. Access-Control-Allow-Origin:null
  2. JSON est appelé via Proxy Requeste pour charger le JSON dans le corps.

Je peux déjà récupérer le côté serveur JSON via .NET, mais je dois transmettre certaines variables au côté client pour pouvoir les manipuler dans jQuery. Comment puis-je m’y prendre?

Vous n’avez pas besoin de faire cela de manière difficile, le serveur accepte JSONP . Il suffit d’append le callback=? paramètre à votre url et cela fonctionne bien.

 baseUrl = "https://acs.leagueoflegends.com/v1/stats/game/TRLH3/1001440043/timeline?gameHash=4725b07311676885&callback=?"; 

Le “JSON” que vous récupérez est malformé cependant

 SyntaxError: Unexpected token ':'. Parse error. (anonymous function)timeline:1 

MODIFIER

Il semble que le serveur ne retourne pas non plus JSONP. En utilisant un service proxy, vous pouvez le faire fonctionner:

 var proxyUrl = 'https://jsonp.afeld.me/'; var serviceUrl = "https://acs.leagueoflegends.com/v1/stats/game/TRLH3/1001440043/timeline?gameHash=4725b07311676885"; var url = proxyUrl + '?url=' + encodeURIComponent(serviceUrl) + '&callback=?'; 

C’est une fonction asynchrone. De plus, vous ne recevez que l’object XHR. Alors, mettez-le dans la fonction:

 var baseUrl = "https://acs.leagueoflegends.com/v1/stats/game/TRLH3/1001440043/timeline?gameHash=4725b07311676885"; $.getJSON(baseUrl, function(data) { json = JSON.parse(data); $("#output").text(JSON.ssortingngify(json)); }); 

Cela devrait marcher.

Vous devez utiliser un script côté serveur, tel que le fichier proxy PHP, qui lit le contenu et l’exécute correctement.

Proxy.php :

  

Et appelez ça comme ça:

 url: "proxy.php?url=https://acs.leagueoflegends.com/v1/stats/game/TRLH3/1001440043/timeline?gameHash=4725b07311676885"