jQuery Deferreds - 将$ .when的结果传递给$ .then

时间:2011-06-14 03:04:28

标签: jquery ajax jquery-deferred

我开始使用jQuery Deferred对象了,我遇到了这个问题:

我有一个中央AJAX函数,可以执行数据的预验证,ajax设置以及发送到服务器并将xyz作为数据返回的一些其他内容。如何在$ .when(ajaxfn).then(dosomethingwithresult())的'then'部分访问'xyz';我得到ajaxfn返回一个延迟对象,但是有没有办法向前传递xhr的responseText?

我基本上是这样做的......

function ajaxfn(data) {
prevalidate(data);
return $.ajax(settings);
}
$.when(ajaxfn).then(function() {
// put 'xyz' on the page somewhere.
});

目前我只是传入$ .data指向ajaxfn的指针,然后在ajax请求的成功中,我有$('body',pos,result)然后从那里访问它在里面$('body).data(pos)== xyz。我想知道是否有更好的方式来做我所描述的事情?

2 个答案:

答案 0 :(得分:2)

这可以简化为:

function ajaxfn(data) {
    prevalidate(data);
    return $.ajax(settings);
}

ajaxfn().then(function(response) {
    console.debug(response);
});

无需使用$.when对象。 ajax已经回复了承诺。

答案 1 :(得分:1)

试试这个

$.when(ajaxfn()).then(function(data) {
    // put 'xyz' on the page somewhere.
});