我无法将元素推送到工作数组。控制台日志返回正确的对象,但它们不会被推送到数组......这是我的代码:
var works = new Array();
$(window).ready(function()
{
$.getJSON('AJAX/getWorks.php', function(data) {
$.each(data, function(key, val) {
console.log(val);
works.push(val);
});
});
console.log(works);
});
和json对象:
Object
date: "2012-04-08 17:53:58"
description: "sadasd"
id: "2"
link: "sadasd"
name: "dsad"
objects: null
position: "2"
__proto__: Object
有人看到我做错了吗?提前感谢您的答案...
答案 0 :(得分:5)
您在代码中过早地记录了数组。 console.log
将在ajax请求完成之前运行,因为ajax
是异步的。
$.getJSON('AJAX/getWorks.php', function(data) {
$.each(data, function(key, val) {
console.log(val);
works.push(val);
});
console.log(works); // move this here so the array is logged after the ajax request finishes.
});
编辑
如果要在ajax请求后使用该变量,可以执行以下操作
创建一个容纳ajax请求的函数
function getWorks()
{
return $.getJSON('AJAX/getWorks.php', function(data) {
$.each(data, function(key, val) {
works.push(val);
});
}
然后,您可以执行以下操作以确保ajax请求已完成。
$.when( getWorks() ).then(function(){
// you can access the array in here because the ajax has finished executing
});