1

我开始更多地使用 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。我想知道是否有更好的方法来做我所描述的事情?

4

2 回答 2

2

这可以简化如下:

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

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

不需要使用$.when对象。ajax 已经返回了一个承诺。

于 2011-06-14T03:22:47.530 回答
1

尝试这个

$.when(ajaxfn()).then(function(data) {
    // put 'xyz' on the page somewhere.
});
于 2011-06-14T03:11:23.540 回答