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

标签 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。我想知道是否有更好的方法来完成我所描述的事情?

最佳答案

这可以像这样简化:

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

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

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

关于jQuery Deferreds - 将 $.when 的结果传递给 $.then,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6338647/

相关文章:

javascript - 将变量列表动态包含到 Jquery 函数中作为参数

javascript - 标签之间的 CSS 样式空间

jquery - 向 append 在 .click 上的 DIV 添加关闭按钮

javascript - 使用 AJAX、Javascript 和 PHP 与 MySQL 来显示搜索结果

java - 在 JSP 中从 JavaScript/jQuery 调用后端 Java 方法

javascript - XMLHttpRequest 服务器没有应答

javascript - insideHTML 和一个变量

javascript - 检查关键字的 URL 片段

javascript - jQuery promise 一切

javascript - 将回调附加到充当一次触发的全局事件的 promise 的概念是否有一个名称? (如 $(document).ready())