我有一个像
这样的帖子请求 $.post("test", {
ajax: "true",
action: ""
}).done(function(data){
if (data == "ok"){
//xxx
} else if (data == "err"){
//yyy
}
}).fail(function(){
//yyy
});
如果.done()方法中的代码(注释'yyy')在fail方法中相同(注释'yyy'),如何避免post请求中的代码重复?
答案 0 :(得分:8)
最明显和最简单的解决方案是简单地进行故障回调,如下所示:
function ajaxFailed() {
// yyy
}
$.post("test", {
ajax: "true",
action: ""
}).done(function(data){
if (data == "ok"){
//xxx
} else if (data == "err"){
ajaxFailed();
}
}).fail(ajaxFailed);
答案 1 :(得分:3)
您可以使用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
}
});
答案 2 :(得分:1)
让他们调用相同的功能,例如
function onErr() {
//yyy
}
$.post("test", {
ajax: "true",
action: ""
}).done(function(data){
if (data == "ok"){
//xxx
} else if (data == "err"){
onErr();
}
}).fail(onErr);
答案 3 :(得分:0)
另一种方法是稍微更改协议,并使用HTTP status codes表示成功或失败:
if($sqlError){
header("HTTP/1.1 503 Service unavailable");
}
...
.done(function(){
//xxx
}).fail(function(){
//yyy
});