我应该使用'error:'回调还是只检查ajax调用中返回的'data'?

时间:2012-06-18 16:19:32

标签: java jquery servlets

以下是我提交ajax请求的方式:

$.ajax({
            url: "myurl",       
            type: 'POST',
            dataType : "text",
            data : ({
                json : myjson
            }),
            success : function(data) {

                if(data == 'success'){
                    //alert('success');
                }
                else {
                    alert('fail');
                }

                };
            }

        });   

在java中我只返回包含'success'或'fail'的字符串,具体取决于是否抛出异常:

伪代码:

try {
return "success";
}
catch (Exception e){
return "fail";
}

这是否足以代替使用ajax错误回调?如果不够,应如何使用此回调以及检查哪些额外的故障条件?

   error : function() {
                alert ('error');
    } 

1 个答案:

答案 0 :(得分:3)

error回调的目的是不同的:如果在发送请求或接收响应期间发生错误,jQuery将调用该函数。例如,如果您的服务器没有返回答案,而是“500 Internal Server Error”(或任何其他错误),则根本不会调用success回调函数。如果您定义error回调,那么它将被调用 - 您将有机会弄清楚错误是什么。

仅仅因为您的服务器完美运行并不意味着不会发生通信错误:例如,它可能是“网关超时”,“无主机路由”等。

最后,如果你声明dataType: json(我知道它不适用于你的例子)但是无法解析返回的数据(即它不是格式良好的JSON字符串),你的error函数将被调用,而不是success函数。