Javascript 浏览器中的JSON对象为空,但不是firebug
当我在firebug中单步执行此javascript代码(scoreboard.js)时,它可以很好地处理警报。当我没有在firebug中设置换行符并正常运行时,我收到一条“favs为空”消息(没有警报) HTMLJavascript 浏览器中的JSON对象为空,但不是firebug,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,当我在firebug中单步执行此javascript代码(scoreboard.js)时,它可以很好地处理警报。当我没有在firebug中设置换行符并正常运行时,我收到一条“favs为空”消息(没有警报) HTML <html> <head> <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script> <sc
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="scoreboard.js"></script>
</head>
<body>
Test
</body>
试验
你知道这里发生了什么吗?你不需要知道
favs = $.parseJSON(favs.responseText);
我非常确定$.getJSON()
不会返回json,而是返回一个
查看的文档中,您可能应该执行以下操作:
getJSON(url[,data][,success(data,textStatus,jqXHR)])
$.getJSON(“favs.json”,
函数(json)
{
var favs=json.myTeams;
for(i=0;i在我看来像是一个竞争条件。getJson函数接受一个onSuccess参数,当数据加载时将调用该参数。如果您将其他行移到该函数中,您应该会很好
下面的文档链接中有一些很好的例子。我在这里发布的代码是为了根据您提供的信息显示更多的例子
大致如下:
var favs = $.getJSON("favs.json", function(data) {
favs = $.parseJSON(data.responseText);
favs = favs.myTeams;
for (i=0; i<favs.length; i++){
alert(favs[i].text);
}
} );
var favs=$.getJSON(“favs.json”),函数(数据){
favs=$.parseJSON(data.responseText);
favs=favs.myTeams;
对于(i=0;i$。getJSON
是异步的。这意味着它在后台运行,因此在检索JSON之前调用$。getJSON
后面的行
您应该将所有处理JSON的代码放在回调中
(请注意,$。不需要parseJSON
。$。getJSON
为您提供此功能)
$.getJSON(“favs.json”),函数(favs){
favs=favs.myTeams;
对于(i=0;i,问题在第一行:
var favs = $.getJSON("favs.json");
getJSON()方法是异步的,也就是说,从服务器返回响应需要时间,javascript在运行其余代码之前不会坐等
您需要使用回调函数,该函数在响应返回时执行:
var favs = null;
$.getJSON("favs.json", function(data) {
// data is what the server returned
// now you can do stuff with it
favs = data.myTeams;
// the rest of your code goes here
})
$.getJSON需要成功回调。这应该可以:
$.getJSON('favs.json', function (data) {
favs = data.myTeams;
for (i=0; i<favs.length; i++){
alert(favs[i].text);
}
});
$.getJSON('favs.json',函数(数据){
favs=data.myTeams;
对于(i=0;iRemove$.parseJSON(data.responseText);
,这是错误的。数据将为您解析(因此没有responseText
属性)。我不会称之为“竞争条件”,因为没有“计时”这里。在从服务器返回数据之前运行$.getJSON
后面的行,这是无法避免的。删除var favs=null;
。只能在回调中访问数据;它应该是局部变量,而不是全局变量。同时删除$.parseJSON(数据);
,数据由$.getJSON
解析。True关于$.parseJSON
。也许True关于favs
,除了我们不知道更大的上下文之外。也许还有其他异步函数在更下面使用favs
,比如,单击。getJSON方法将返回json作为第一个argu成功函数的定义。
$.getJSON("favs.json", function(favs){
favs = favs.myTeams;
for (i=0; i<favs.length; i++){
alert(favs[i].text);
}
});
var favs = $.getJSON("favs.json");
var favs = null;
$.getJSON("favs.json", function(data) {
// data is what the server returned
// now you can do stuff with it
favs = data.myTeams;
// the rest of your code goes here
})
$.getJSON('favs.json', function (data) {
favs = data.myTeams;
for (i=0; i<favs.length; i++){
alert(favs[i].text);
}
});