为什么不在数组中添加元素?

时间:2013-01-29 09:41:27

标签: javascript jquery arrays

代码:

$(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>

请告诉我为什么数据不会添加到数组中?

2 个答案:

答案 0 :(得分:6)

post request异步方法

即使在您点击成功功能之前,您也会点击警报。

    Asynchronous means that the script will send a request to the
 server, and continue its execution without waiting for the reply.

答案 1 :(得分:0)

由于您正在执行异步操作(AJAX调用),因此只有在请求完成后,您的数据才会更新。所以,你应该在ajax调用完成后检查你的数组 使用jQuery deferred objects的方法,可以很容易地实现这一点:

$(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);
     });
});