0

コード:

$(function(){
    var Name = [];

    for($i=1; $i<16; $i++) {
        var id = $i;
        $.post("./index.php", {
            record : id
        }, function(data){
              Name.push(data);
        });
    }

    alert(Name);
});

データは次のように結果を返します<a href="#"><img src="./name.jpg"></a>

データが配列に追加されない理由を教えてください。

4

2 に答える 2

6

非同期メソッドpost requestです。

成功関数をヒットする前でも、アラートをヒットします。

    Asynchronous means that the script will send a request to the
 server, and continue its execution without waiting for the reply.
于 2013-01-29T09:44:59.843 に答える
0

非同期操作(AJAX呼び出し)を実行しているため、データはリクエストが完了した後にのみ更新されます。したがって、ajax呼び出しが完了した後、配列を確認する必要があります。jQueryの遅延オブジェクト
のメソッドを使用すると、これは次のように簡単に実現できます。

$(function(){
    var Name = [];
    var requests = [];

    for($i=1; $i<16; $i++) {
        var id = $i;
        requests.push($.post("./index.php", {
            record : id
        }, function(data){
              Name.push(data);
        }));
    }

     $.when.apply($,requests).done(function(){
         alert(Name);
     });
});
于 2013-01-29T09:51:35.663 に答える