jQuery $ .post延期

atp*_*atp 3 jquery

我如何使用jQuery的延迟$.post?我试过了:

var myFunc = function(data, textStatus, jqXHR) {
    console.log(data);
};
var post = $.post("/url/", someData);
$.when(post).done(myFunc);
Run Code Online (Sandbox Code Playgroud)

通常

$.post("/url/", someData, function(data) { myFunc(data) });
Run Code Online (Sandbox Code Playgroud)

工作正常(更改myFunc签名后).

$.when...不起作用,没有错误显示我失败.究竟是什么.done()功能传入myFunc

Mat*_*all 6

jQuery ajax函数返回一个jqXHR,它本身就是一个延迟对象(它实现了Promise接口).所以没必要$.when().

也没有必要使用命名函数表达式myFunc,正常的函数声明就可以了.

function func1(data, textStatus, jqXHR) {
    console.log('success', data);
}

function func2(jqXHR, textStatus) {
    console.log('done', textStatus);
}

$.post('/url/', someData).success(func1).done(func2);
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/mattball/ng7zT/


究竟是什么.done()功能传入myFunc

这在上面的jqXHR链接中记录,也在$.post.

成功回调函数将传递返回的数据,该数据将是XML根元素或文本字符串,具体取决于响应的MIME类型.它还传递了响应的文本状态.

从jQuery 1.5开始,成功的回调函数也传递了一个"jqXHR"对象(在jQuery 1.4中,它传递了XMLHttpRequest对象).