发布到aspx页面时,jquery ajax没有捕获错误

时间:2012-03-15 20:53:24

标签: jquery asp.net

$.ajax({
type: "POST",
url: "/zzz/bbb/abcd.aspx?deleteIDs=" + request_ids,
contentType: "application/x-www-form-urlencoded",
data: '',
dataType: "html",
complete: function(xhr, status) { 

    if (status == "success") 
    {
    }
    else {
    }
}

无论后台操作的结果如何,上面的jquery代码都具有status =“success”。我做错了什么?

2 个答案:

答案 0 :(得分:1)

如果该代码正是您正在使用的代码,则url字段中存在错误:您使用双引号打开该行,并以单引号结束。

答案 1 :(得分:1)

“成功”仅指服务器的响应。如果服务器响应是200响应,则无论服务器端的业务逻辑是否遇到问题,都将被视为成功。

您可以从服务器返回400或500错误代码,或者最好将响应发送回包含任何错误消息的JS。

例如,我通常期望来自服务器的JSON响应。如果服务器端出现错误,它包含一个错误:true标志,我在JS中处理它。因此,典型的无错误响应是:

{error:false, html:"My HTML in here"}

服务器上的错误将返回:

{error:true, errorMsg: "My error message here"}

编辑举例:

如上所述期待JSON响应,我可以这样做:

$.ajax({
    url: 'test.json',
    dataType: 'json',
    success: function(data) {
        if (data.error) { alert(data.errorMsg); }
        else {
            //do something with data.html
        }
    }
});