Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 浏览器中的JSON对象为空,但不是firebug_Javascript_Jquery_Ajax_Json - Fatal编程技术网

Javascript 浏览器中的JSON对象为空,但不是firebug

Javascript 浏览器中的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

当我在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>
    <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);
    }
});