2

我无法将元素推送到作品数组。控制台日志正在返回正确的对象,但它们不会被推送到数组中......这是我的代码:

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

有人看到我做错了吗?提前感谢您的回答...

4

1 回答 1

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
 }); 
于 2012-04-20T16:39:24.347 回答