我开始使用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。我想知道是否有更好的方式来做我所描述的事情?
答案 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.
});