我有一个post request
$.post("test", {
ajax: "true",
action: ""
}).done(function(data){
if (data == "ok"){
//xxx
} else if (data == "err"){
//yyy
}
}).fail(function(){
//yyy
});
如何避免代码重复在post请求如果代码在。done()方法(评论'yyy')相同的失败方法(评论'yyy') ??
最明显和最简单的解决方案是简单地有一个失败回调,如下所示:
function ajaxFailed() {
// yyy
}
$.post("test", {
ajax: "true",
action: ""
}).done(function(data){
if (data == "ok"){
//xxx
} else if (data == "err"){
ajaxFailed();
}
}).fail(ajaxFailed);
您可以使用always回调方法,请求将始终在该块中。正如您所知道的,当数据包含错误或不包含错误时,此方法将适用于服务器端错误。您可以通过定义最后的else块来捕获客户端错误。
$.post("test", {
ajax: "true",
action: ""
}).always(function(data){
if (data == "ok"){
//xxx
} else if (data == "err"){
//handle server-side errors
} else {
//handle client-side errors like 404 errors
}
});
让它们调用相同的函数,例如
function onErr() {
//yyy
}
$.post("test", {
ajax: "true",
action: ""
}).done(function(data){
if (data == "ok"){
//xxx
} else if (data == "err"){
onErr();
}
}).fail(onErr);
另一种方法是稍微更改协议,并使用HTTP状态码来指示成功或失败:
if($sqlError){
header("HTTP/1.1 503 Service unavailable");
}
…
.done(function(){
//xxx
}).fail(function(){
//yyy
});