AJAX查询错误/成功

时间:2011-06-09 16:00:53

标签: jquery

如果我错了,请纠正我,但我对$.post成功/失败的理解是,如果网址有效,这将会成功。唯一一次返回失败的是url无效。

如果是这样,我该如何验证成功功能?我问的原因是无论发生什么事情,即使后面的代码有错误,我总是得到相同的成功警报。

3 个答案:

答案 0 :(得分:1)

这取决于您如何处理错误服务器端。

您可以使用try/catch将变量用作flag true/false,并使用消息来识别错误情况。返回js时,检查这些变量以确保响应正常

答案 1 :(得分:1)

不,有很多情况$.post可能会返回错误。

jQuery Source Code,您可以看到HTTP状态代码用于确定请求是否成功:

// If successful, handle type chaining 
if ( status >= 200 && status < 300 || status === 304 ) {

可能会返回“错误”状态的原因有很多。这可能是由于404(错误的URL),但也可能是由于500(内部服务器错误)。在后一种情况下,服务器代码中的异常可能会触发错误。

为了帮助解决您的错误,您需要提供更多信息。发生了什么类型的错误?你有错误的文本吗?

答案 2 :(得分:0)

我发现 ajax.success()的命名有点误导。 另外(来自jQuery docs):

  

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');
}