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 回答