ajax异常报错,jQuery Ajax错误处理,显示自定义异常消息

有没有什么方法可以在我的jQuery AJAX错误消息中显示自定义异常消息作为警报?

例如,如果我想通过扔在服务器端异常的Struts通过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);

}

});

}

});

在第二个警报,我警告抛出的错误,我得到undefined ,状态代码是500。

我不确定我哪里出错了。 我该怎么做才能解决这个问题?

#1楼

首先,我们需要在web.config中设置:

****

除了在错误部分的jquery级别,你需要解析包含异常的错误响应,如:

.error(function (response, q, t) {

var r = jQuery.parseJSON(response.responseText);

});

然后使用r.Message,您可以实际显示异常文本。

#2楼

如果调用asp.net,这将返回错误消息标题:

我自己并没有编写所有的formatErrorMessage,但我发现它非常有用。

function formatErrorMessage(jqXHR, exception) {

if (jqXHR.status === 0) {

return ('Not connected.\nPlease verify your network connection.');

} else if (jqXHR.status == 404) {

return ('The requested page not found. [404]');

} else if (jqXHR.status == 500) {

return ('Internal Server Error [500].');

} else if (exception === 'parsererror') {

return ('Requested JSON parse failed.');

} else if (exception === 'timeout') {

return ('Time out error.');

} else if (exception === 'abort') {

return ('Ajax request aborted.');

} else {

return ('Uncaught Error.\n' + jqXHR.responseText);

}

}

var jqxhr = $.post(addresshere, function() {

alert("success");

})

.done(function() { alert("second success"); })

.fail(function(xhr, err) {

var responseTitle= $(xhr.responseText).filter('title').get(0);

alert($(responseTitle).text() + "\n" + formatErrorMessage(xhr, err) );

})

#3楼

使用以下命令在服务器上抛出新的异常:

Response.StatusCode = 500

Response.StatusDescription = ex.Message()

我相信StatusDescription会返回到Ajax调用...

例:

Try

Dim file As String = Request.QueryString("file")

If String.IsNullOrEmpty(file) Then Throw New Exception("File does not exist")

Dim sTmpFolder As String = "Temp\" & Session.SessionID.ToString()

sTmpFolder = IO.Path.Combine(Request.PhysicalApplicationPath(), sTmpFolder)

file = IO.Path.Combine(sTmpFolder, file)

If IO.File.Exists(file) Then

IO.File.Delete(file)

End If

Catch ex As Exception

Response.StatusCode = 500

Response.StatusDescription = ex.Message()

End Try

#4楼

$("#save").click(function(){

$("#save").ajaxError(function(event,xhr,settings,error){

$(this).html{'error: ' (xhr ?xhr.status : '')+ ' ' + (error ? error:'unknown') + 'page: '+settings.url);

});

});

#5楼

$("#fmlogin").submit(function(){

$("#fmlogin").ajaxError(function(event,xhr,settings,error){

$("#loading").fadeOut('fast');

$("#showdata").fadeIn('slow');

$("#showdata").html('Error please, try again later or reload the Page. Reason: ' + xhr.status);

setTimeout(function() {$("#showdata").fadeOut({"opacity":"0"})} , 5500 + 1000); // delays 1 sec after the previous one

});

});

如果有任何表格提交验证

只需使用其余的代码

$("#fmlogin").validate({...

... ... });

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果在原生的 AJAX 中没有出现问题,但是在使用 jQuery 封装的 `$.ajax()` 方法时出现了错误,可能是因为使用了不正确的配置参数或者代码有误。 以下是一些常见的原因和解决方法: 1. 未正确指定请求方法或请求地址。 在使用 `$.ajax()` 方法时,需要指定请求的 URL 和请求方法。如果未正确指定这些参数,会导致 AJAX 请求失败。请确保在调用 `$.ajax()` 方法时,`url` 和 `type` 属性已经正确设置。例如: ```javascript $.ajax({ url: "example.php", // 指定请求的 URL type: "POST", // 指定请求方法 data: {name: "张三"}, success: function(data) { console.log(data); // 输出响应数据 } }); ``` 2. 未正确处理响应数据。 在使用 `$.ajax()` 方法时,需要在 `success` 回调函数中处理响应数据。如果未正确处理响应数据,可能会导致出现错误。请确保在 `success` 回调函数中正确处理响应数据。例如: ```javascript $.ajax({ url: "example.php", success: function(data) { console.log(data); // 输出响应数据 } }); ``` 在上面的代码中,`success` 回调函数中将响应数据输出到控制台,可以根据实际情况进行处理。 3. 未正确设置请求头。 在使用 `$.ajax()` 方法时,如果需要设置请求头,需要在 `headers` 属性中指定。如果未正确设置请求头,可能会导致出现错误。请确保在 `headers` 属性中正确设置请求头。例如: ```javascript $.ajax({ url: "example.php", headers: { "Content-Type": "application/json" // 设置请求头 }, success: function(data) { console.log(data); // 输出响应数据 } }); ``` 在上面的代码中,将 `Content-Type` 请求头设置为 `"application/json"`,表示请求数据的格式是 JSON。需要根据实际情况设置请求头。 4. 未正确指定数据类型。 在使用 `$.ajax()` 方法时,`dataType` 属性用于指定响应数据的类型。如果未正确指定数据类型,可能会导致出现错误。请确保在调用 `$.ajax()` 方法时,`dataType` 属性已经正确设置。例如: ```javascript $.ajax({ url: "example.php", dataType: "json", // 指定响应数据的类型为 JSON success: function(data) { console.log(data); // 输出响应数据 } }); ``` 在上面的代码中,将 `dataType` 属性设置为 `"json"`,表示要将响应数据解析为 JSON 格式。需要根据实际情况设置数据类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值