javascript / jquery - 对象无法迭代

时间:2012-07-24 06:16:52

标签: javascript jquery

所以,我从php页面得到了一个对象,它吐出了我拥有的JSON。当我设置一个等于我创建的对象的全局变量然后尝试使用for(key in obj)循环获取数据时,它似乎不起作用。

如果我用类似随机$ .post的东西包围for循环,它就可以了。我很困惑为什么会这样。

这是我的代码:

var myObj1 = new Object;

$(document).ready(function() {
$.post('namenums.php', {num : 1}, function(data) {
    var temp = $.parseJSON(data);
    for(var key in temp) {
        myObj1[key] = temp[key]['firstname'] + ' ' + temp[key]['lastname'];
    }
});

getStuff();
thing();
});

function thing() {
    for(var key in myObj1) {
        console.log(key);
    }
}

现在,如果我将我的thing()函数更改为类似的东西,那就可以了。

function thing() {
        $.post('random.php', function(data) {
    for(var key in myObj1) {
        console.log(key);
    }
        });
}

那么,有人可以解释为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

不确定。在第一个示例中,在文档准备就绪时调用thing() - 不一定在$.post启动的AJAX调用完成后调用。在第二个示例中,在AJAX请求结束,完成并返回结果之前,您不会尝试记录任何内容。

您可以通过在thing()提供的回调中将您的电话转移至$.post来修复第一个示例:

$(document).ready(function() {
  $.post('namenums.php', {num : 1}, function(data) {
    var temp = $.parseJSON(data);
    for(var key in temp) {
      myObj1[key] = temp[key]['firstname'] + ' ' + temp[key]['lastname'];
    }
    thing();
  });

  getStuff();
});