将JSON从服务器端(.NET)传递到客户端(jQuery)

时间:2015-12-10 14:18:01

标签: jquery .net

我正在尝试从以下网址加载JSON:

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

我的代码如下所示:

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

我的输出内容如下:

{"readyState":1}

的jsfiddle:

https://jsfiddle.net/6Lwjpjmo/

编辑:由于以下两个原因,显然无法从该网址检索JSON:

  1. Access-Control-Allow-Origin:null
  2. 通过Proxy Requeste调用JSON以在正文中加载JSON。
  3. 我已经可以通过.NET检索JSON服务器端,但是需要将某些变量传递给客户端以在jQuery中进行操作。我该怎么做?

2 个答案:

答案 0 :(得分:2)

这是一个异步功能。而且,您只接收XHR对象。所以,把它放在函数中:

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.stringify(json));
});

这应该有用。

您需要使用像代理PHP文件一样的服务器端脚本,它会读取内容并正确执行。

Proxy.php

<?php
    header("Content-type: application/json");
    die(file_get_contents($_GET["url"]));
?>

并称之为:

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

答案 1 :(得分:1)

您不需要这么做,服务器确实接受JSONP。只需将callback=?参数添加到您的网址即可。它可以正常使用。

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

&#34; JSON&#34;然而,你回来的是不正确的

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

修改

服务器似乎也没有返回JSONP,使用代理服务可以使它工作:

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=?';