Poo*_*att 98 jquery jquery-deferred
谁能帮我?
我无法理解之间的区别success和.done()的$.ajax.
如果可能请举例.
Kei*_*ith 104
success仅在AJAX调用成功时触发,即最终返回HTTP 200状态.error如果失败并且complete请求结束时触发,无论成功与否.
在jQuery 1.8中,jqXHR对象(返回者$.ajax)success被替换为done,errorwith fail和completewith always.
但是,您仍然可以使用旧语法初始化AJAX请求.所以这些做类似的事情:
// set success action before making the request
$.ajax({
url: '...',
success: function(){
alert('AJAX successful');
}
});
// set success action just after starting the request
var jqxhr = $.ajax( "..." )
.done(function() { alert("success"); });
Run Code Online (Sandbox Code Playgroud)
此更改是为了与jQuery 1.5的延迟对象兼容.延迟(现在Promise,Chrome和FX中具有完全本机浏览器支持)允许您链接异步操作:
$.ajax("parent").
done(function(p) { return $.ajax("child/" + p.id); }).
done(someOtherDeferredFunction).
done(function(c) { alert("success: " + c.name); });
Run Code Online (Sandbox Code Playgroud)
这个函数链比你得到的嵌套金字塔回调更容易维护success.
但请注意,done现在不推荐Promise使用then代替使用的语法:
$.ajax("parent").
then(function(p) { return $.ajax("child/" + p.id); }).
then(someOtherDeferredFunction).
then(function(c) { alert("success: " + c.name); }).
catch(function(err) { alert("error: " + err.message); });
Run Code Online (Sandbox Code Playgroud)
这值得采用,因为async并且await扩展了promises改进的语法(和错误处理):
try {
var p = await $.ajax("parent");
var x = await $.ajax("child/" + p.id);
var c = await someOtherDeferredFunction(x);
alert("success: " + c.name);
}
catch(err) {
alert("error: " + err.message);
}
Run Code Online (Sandbox Code Playgroud)
bat*_*tar 10
简而言之,从ajax函数中解耦成功回调函数,以便以后可以添加自己的处理程序而无需修改原始代码(观察者模式).
请从此处查找更多详细信息:https://stackoverflow.com/a/14754681/1049184
.success() 只有当您的网络服务器以200 OK HTTP标头响应时才会被调用 - 基本上当一切都很好时.
解析deferred时将触发附加到done()的回调.当deferred被拒绝时,将触发附加到fail()的回调.
promise.done(doneCallback).fail(failCallback)
.done() has only one callback and it is the success callback
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
99130 次 |
| 最近记录: |