Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery.post().done()和success:_Jquery_Jqxhr - Fatal编程技术网

jQuery.post().done()和success:

jQuery.post().done()和success:,jquery,jqxhr,Jquery,Jqxhr,jQuery关于jQuery.post()的文档 success:参数和jqXHR.done()方法之间有什么区别;如果没有,那么jqXHR.done()方法的全部要点是什么?两个.done()和.success()都是回调函数,它们的功能基本相同 这是我的建议。不同之处在于,.success()在jQuery 1.8中被弃用。您应该改用.done() 如果您不想单击该链接: 弃用通知 jqXHR.success()、jqXHR.error()和jqXHR.complete()回调 从jQuer

jQuery
关于
jQuery.post()的文档

success:
参数和
jqXHR.done()
方法之间有什么区别;如果没有,那么
jqXHR.done()
方法的全部要点是什么?

两个
.done()
.success()
都是回调函数,它们的功能基本相同

这是我的建议。不同之处在于,
.success()
在jQuery 1.8中被弃用。您应该改用
.done()

如果您不想单击该链接:

弃用通知

jqXHR.success()
jqXHR.error()
jqXHR.complete()
回调 从jQuery1.8开始,jQuery1.5中引入的方法就不再推荐了。到 为最终删除代码做好准备,请使用
jqXHR.done()
jqXHR.fail()
,改为
jqXHR.always()

jqXHR.done(函数(数据、文本状态、jqXHR){})

成功回调选项的替代方法构造.done() 方法替换已弃用的jqXHR.success()方法。提到 deferred.done()获取实现详细信息


要点是它只是成功回调选项的一个替代选项,
jqXHR.success()
已被弃用。

jQuery过去只具有
success
error
complete
的回调函数

然后,他们决定用jqXHR对象支持承诺,于是他们添加了
.done()
.fail()
.always()
,等等。。。本着承诺API的精神。这些新方法的作用与回调几乎相同,但形式不同。您可以使用对您的编码风格更有效的API样式

随着人们越来越熟悉Promission,以及越来越多的异步操作使用该概念,我怀疑随着时间的推移,越来越多的人将转向promise API,但与此同时,jQuery同时支持这两种API

.success()
方法已被弃用,取而代之的是公共承诺对象方法名称

从中,您可以看到各种promise方法与回调类型的关系:

jqXHR.done(函数(数据、文本状态、jqXHR){})替代方案 构造成功回调选项,.done()方法替换 已弃用的jqXHR.success()方法。有关详细信息,请参阅deferred.done() 实施细节

jqXHR.fail(函数(jqXHR,textStatus,errorshown){})An 错误回调选项的替代构造.fail()方法 替换已弃用的.error()方法。有关详细信息,请参阅deferred.fail() 实施细节

jqXHR.always(函数(数据| jqXHR、文本状态、jqXHR |错误抛出){ });完整回调选项的替代构造 .always()方法替换不推荐使用的.complete()方法

为了响应成功的请求,函数的参数是 与.done()相同:data、textStatus和jqXHR对象。对于 失败的请求参数与.fail()的参数相同: jqXHR对象、textStatus和error抛出。请参阅deferred.always() 有关实施细节

然后(函数(数据,文本状态,jqXHR){},函数(jqXHR, textStatus,errorThrown){}
集成了 .done()和.fail()方法,允许(从jQuery 1.8开始) 潜在的承诺被操纵。有关详细信息,请参阅deferred.then() 实施细节


如果您希望以更符合ES6 Promissions标准的方式编写代码,那么在这四个选项中,您将只使用
.then()

首选Promissions而不是回调函数的原因是要有多个回调,并避免回调地狱之类的问题

回调地狱(有关更多详细信息,请参阅): 异步javascript,或使用回调的javascript,很难直观地得到正确的结果。很多代码最终都是这样的:

asyncCall(function(err, data1){
    if(err) return callback(err);       
    anotherAsyncCall(function(err2, data2){
        if(err2) return calllback(err2);
        oneMoreAsyncCall(function(err3, data3){
            if(err3) return callback(err3);
            // are we done yet?
        });
    });
});
有了承诺,上述代码可以重写如下:

asyncCall()
.then(function(data1){
    // do something...
    return anotherAsyncCall();
})
.then(function(data2){
    // do something...  
    return oneMoreAsyncCall();    
})
.then(function(data3){
    // the third and final async response
})
.fail(function(err) {
    // handle any error resulting from any of the above calls    
})
.done();
asyncCall()
.then(function(data1){
    // do something...
    return anotherAsyncCall();
})
.then(function(data2){
    // do something...  
    return oneMoreAsyncCall();    
})
.then(function(data3){
    // the third and final async response
})
.fail(function(err) {
    // handle any error resulting from any of the above calls    
})
.done();