有没有什么方法可以在我的jQuery AJAX错误消息中显示自定义异常消息作为警报?
例如,如果我想通过Struts by 在服务器端抛出异常throw new ApplicationException("User name already exists");,我想在jQuery AJAX错误消息中捕获此消息('用户名已存在').
jQuery("#save").click(function () {
if (jQuery('#form').jVal()) {
jQuery.ajax({
type: "POST",
url: "saveuser.do",
dataType: "html",
data: "userId=" + encodeURIComponent(trim(document.forms[0].userId.value)),
success: function (response) {
jQuery("#usergrid").trigger("reloadGrid");
clear();
alert("Details saved successfully!!!");
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
在第二个警报,我警告抛出的错误,我得到undefined,状态代码是500.
我不确定我哪里出错了.我该怎么做才能解决这个问题?
许多失败的jQuery ajax请求正在以错误污染我的控制台.查看产生这些控制台错误的代码(jQuery 1.7.2,第8240行)
// Do send the request
// This may raise an exception which is actually
// handled in jQuery.ajax (so no try/catch here)
xhr.send( ( s.hasContent && s.data ) || null );
Run Code Online (Sandbox Code Playgroud)
我注意到这个评论解释了为什么没有try/ catch那里.但是,即使error我的jQuery.ajax请求中有一个显式的回调函数,我仍然没有处理这些错误jQuery.ajax.
如何以错误消息不出现在控制台中的方式处理jQuery ajax错误?
编辑:下面是我执行ajax请求的代码段,以及准确的错误消息(在Chrome中):
$.ajax({
dataType: 'xml',
url: "./python/perfdata.xml?sid=" + (new Date()),
success: function (data) {
var protocols = $("Protocols", data).children();
parseData(protocols);
},
error: function (error) {
setTimeout(getData, 200);
}
}); …Run Code Online (Sandbox Code Playgroud)