jQuery延迟-将$.when的结果传递到$.then

jQuery延迟-将$.when的结果传递到$.then,jquery,ajax,jquery-deferred,Jquery,Ajax,Jquery Deferred,我开始更多地使用jQuery延迟对象,遇到了以下问题: 我有一个中央AJAX函数,它执行数据的预验证、AJAX设置和一些其他东西,这些东西发送到服务器并将xyz作为数据返回。如何访问$.when(ajaxfn).then(dosomethingwithresult())中的'then'部分中的'xyz';我知道ajaxfn返回一个延迟对象,但是有没有办法将xhr的responseText向前传递 我基本上是这样做的 function ajaxfn(data) { prevalidate(data

我开始更多地使用jQuery延迟对象,遇到了以下问题:

我有一个中央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.
});
目前我只是传入一个指向ajaxfn的$.data指针,然后在ajax请求成功时,我有$('body',pos,result),然后从$('body.data(pos)=xyz内部像这样访问它。我想知道是否有更好的方法来完成我所描述的任务?

试试这个

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

这可以简化为:

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

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

当对象时,不需要使用
$。ajax已经在返回一个承诺。

好的。。。。哈哈,其实我以前也试过,但根本不起作用。。。我一定是在某个地方发生了一些JS错误,在它到达那个部分之前,没有被放在控制台上阻止它。哈哈,谢谢!然后(从ajax请求返回成功/失败的函数(数据、事件);