2

要素を Works 配列にプッシュできません。コンソールログは適切なオブジェクトを返していますが、それらは配列にプッシュされません...これが私のコードです:

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 に答える