我发现 ajax.success() 的命名有点误导。
另外(来自 jQuery 文档):
jqXHR.success()、jqXHR.error() 和 jqXHR.complete() 回调
将在 jQuery 1.8 中弃用。为他们准备代码
最终删除,使用 jqXHR.done()、jqXHR.fail() 和 jqXHR.always()
而是。
截至目前 - jqXHR.success() 是 jqXHR.done() 的简单快捷方式。
jqXHR.success = jqXHR.done;
jqXHR.error = jqXHR.fail;
jqXHR.complete = completeDeferred.done;
那么 - 当 jQuery 调用 jqXHR.success()(又名 jqXHR.done())时?
嗯 - 如果我正确地查看了源代码,应该会发生两件事:
1) Http响应码必须是:
status >= 200 && status < 300 || status === 304
2) 如果有数据返回 - 解析(来自 json、xml 等)应该没有错误:
try {
success = ajaxConvert( s, response );
statusText = "success";
isSuccess = true;
} catch(e) {
// We have a parsererror
statusText = "parsererror";
error = e;
}
所以 - 回答您的问题。 JavaScript 不知道服务器端代码(PHP、ASP 等)中发生了什么。您应该做的是从您的服务器端代码将 json 响应发送回 javascript,例如,如果没有错误则发送 1,如果有则发送 2:
//php file:
//send 2 in case of an error
echo json_encode(array('error'=>2));
//js file:
if(ajaxresponse.error && ajaxresponse.error == 2) {
alert('error happened');
}