jQuery的AJAX请求返回不同的JSON比预期

问题描述:

我试图从NBA.comjQuery的AJAX请求返回不同的JSON比预期

通过AJAX(jQuery的)请求JSON文件

我第一次尝试获取JSON文件,但有一个CORS错误,所以我尝试使用JSONP

这会返回一个对象,但该对象看起来像是充满了函数和方法,而不是我请求的数据。

我做了这个就codepen这样你就可以检查出来,输出可以与开发者控制台进行检查,因为文件撰写刚刚返回的翻译:

这里是链接到codepen:http://codepen.io/kyriediculous/pen/KNKZZL

$(document).ready(function() { 

function getPlayerGameLogs() { 

    $.ajax ({ 
url: "http://stats.nba.com/stats/commonplayerinfo?LeagueID=00&PlayerID=202355&SeasonType=Regular+Season&format=jsonp", 
dataType:"jsonp", 
success: function(response) { 
    console.log(response); 
} 
    }) 

}; 
    getPlayerGameLogs(); 
}); 

有人可以解释这一点吗?是不可能从nba.com请求JSON?具体来说就是每个玩家的游戏日志。

+1

它,如果你直接访问的URL返回的格式相同的对象:http://stats.nba.com/stats/commonplayerinfo?LeagueID=00&PlayerID=202355&SeasonType=Regular+Season。不知道你期待什么被退回,但这看起来是正确的。 – Turnip

+0

你的问题说它返回的json比预期的要多。你期待什么,因为它看起来像是返回格式良好的json。问题是你不确定如何访问json响应中的数据? – Theo

+0

它看起来像你试图保存jquery opperation到一个字符串,你试图stringify? –

你的例子工作得很好。

$(document).ready(function() { 
 
    
 
function getPlayerGameLogs() { 
 
    
 
    $.ajax ({ 
 
    url: "http://stats.nba.com/stats/commonplayerinfo?LeagueID=00&PlayerID=202355&SeasonType=Regular+Season&format=jsonp", 
 
    dataType:"jsonp", 
 
    success: function(response) { 
 
     console.log(response.resultSets); 
 
     populateTable(response.resultSets, 'CommonPlayerInfo'); 
 
     populateTable(response.resultSets, 'PlayerHeadlineStats'); 
 
    } 
 
    }) 
 
    
 
}; 
 
    getPlayerGameLogs(); 
 
}); 
 

 
function populateTable(resultSets, setName) { 
 
    var data = resultSets.filter(function(set){ 
 
    return set.name === setName; 
 
    })[0]; 
 
    var headers = data.headers; 
 
    var rowSet = data.rowSet; 
 
    var table = $('#' + setName); 
 
    var tr = table.append($('<tr>')); 
 
    $(headers).each(function(){ 
 
    tr.append(tr.append($('<th>').text(this.toString()))); 
 
    }); 
 
    $(rowSet).each(function(){ 
 
    var tr = $('<tr>'); 
 
    this.forEach(function(item){ 
 
     tr.append($('<td>').text(item.toString())); 
 
    }); 
 
    table.append(tr); 
 
    }); 
 
}
body { 
 
    font-family: sans-serif; 
 
} 
 

 
table { 
 
    border: 1px solid gray; 
 
    font-size: 11px; 
 
    border-collapse: collapse; 
 
} 
 

 
td, th { 
 
    border: 1px solid gray; 
 
    padding: 2px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<html> 
 
    <head></head> 
 
    <body> 
 
    <h3>Headline Stats</h3> 
 
    <table id="PlayerHeadlineStats"></table> 
 
    <br /> 
 
    <h3>Player Info</h3> 
 
    <table id="CommonPlayerInfo"></table> 
 
    </body> 
 
</html>

+0

这应该是一条评论。这不是OP的问题 –

+0

[这是返回]的答案(https://photos.google.com/search/_tra_/photo/AF1QipM9O2l881KDEz-scq5U41qsDkzpRc9wKomxZoGC)我得到 – Kyriediculous

+0

@VivekPradhan,OP的问题是如下:有人可以解释这一点吗?是不可能从nba.com请求JSON?我通过解释它的工作原理和确认可以从nba.com请求JSON数据来回答这两个问题。缺乏什么? –