【问题标题】:Should I use 'error:' callback or just check the returned 'data' in ajax call?我应该使用“错误:”回调还是只检查 ajax 调用中返回的“数据”?
【发布时间】:2012-06-18 16:19:32
【问题描述】:

这是我提交 ajax 请求的方式:

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

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

                };
            }

        });   

在 java 中,我只返回包含“成功”或“失败”的字符串,具体取决于是否抛出异常:

伪代码:

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

这是否足以代替使用 ajax 错误回调?如果还不够,应该如何使用这个回调,它会检查哪些额外的失败条件?

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

【问题讨论】:

  • 不发布这个作为答案,因为我对 jQuery 不是很感兴趣,但我认为错误回调是针对网络错误之类的(换句话说,您的服务器站点 Java 可以't or doesn't get back to you.
  • 你混淆了服务器脚本错误处理和 ajax 错误的概念......不一样

标签: java jquery servlets


【解决方案1】:

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

仅仅因为您的服务器工作正常并不意味着不会发生通信错误:例如,它可能是“网关超时”、“没有到主机的路由”等。

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

【讨论】:

  • 好答案。我要补充的是,提供错误回调总是一个好主意,如果没有其他原因,只是记录错误,这样您就可以调试生产中发生的问题,即使您没有通知用户。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-25
  • 2012-08-11
相关资源
最近更新 更多