小编Mar*_*kus的帖子

jQuery Deferred - 得到链式ajax调用的结果

以下问题 - 我必须多次调用ajax函数,当所有函数都完成后,将所有结果都放入数组中.我想出了这个:

function doAjax(xx){
var xdata = {json: $.toJSON({name: xx}),
            delay: 1};
return $.ajax({
    url:"/echo/json/",
    data:xdata,
    type:"POST"
});

}

var carr = [doAjax('a'),doAjax('b'),doAjax('c'),doAjax('d')]
var result = [];

$.when( carr )
    .done(function(data){
        console.log(data);
        $.each(data, function(ix,val){
            console.log(val.name);
        });
    });
Run Code Online (Sandbox Code Playgroud)

这里小提琴:http://jsfiddle.net/Fkd9n/

一切似乎工作正常,"console.log(data)"用响应文本写出对象,但"console.log(val.name)"始终是"未定义".那么一旦完成所有调用,如何将所有结果联合在一个数组中?

谢谢!

ajax jquery deferred

4
推荐指数
1
解决办法
5011
查看次数

标签 统计

ajax ×1

deferred ×1

jquery ×1