所以,我从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);
}
});
}
那么,有人可以解释为什么会这样吗?
答案 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();
});