JQuery ajax 错误函数

我有一个 ajax 调用,它将数据传递给一个页面,然后该页面返回一个值。

我已经从页面中检索到了成功的调用,但是我已经对它进行了编码,以便它在 asp 中引发一个错误。如何从 jquery 检索该错误?

例如:

cache: false,
url: "addInterview_Code.asp",
type: "POST",
datatype: "text",
data: strData,
success: function (html) {
alert('successful : ' + html);
$("#result").html("Successful");
},
error: function (error) {
**alert('error; ' + eval(error));**
}

这个错误我不明白。在函数中我需要放置什么参数,这样我就可以在服务器中使用 长大了的错误消息。

603304 次浏览
error(jqXHR, textStatus, errorThrown)

Http://api.jquery.com/jquery.ajax/

试试这个:

error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}

如果您想通知您的前端有一个验证错误,请尝试返回 json:

dataType: 'json',
success: function(data, textStatus, jqXHR) {
console.log(data.error);
}

你的 ASP 脚本应该返回:

{"error": true}

Ajax error函数中所需的参数是 jqXHR, exception,您可以像下面这样使用它:

$.ajax({
url: 'some_unknown_page.html',
success: function (response) {
$('#post').html(response.responseText);
},
error: function (jqXHR, exception) {
var msg = '';
if (jqXHR.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (jqXHR.status == 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status == 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + jqXHR.responseText;
}
$('#post').html(msg);
},
});

小提琴演奏


参数

JqXHR:

它实际上是一个错误对象,看起来像这样

Ajax error jqXHR object

您也可以在自己的浏览器控制台中查看这一点,方法是在 error函数中使用 console.log,如:

error: function (jqXHR, exception) {
console.log(jqXHR);
// Your error handling logic here..
}

我们使用这个对象的 status属性来获取错误代码,比如如果我们得到 status = 404,这意味着无法找到请求的页面。根本不存在。基于该状态代码,我们可以将用户重定向到登录页面或者我们的业务逻辑需要的任何内容。

例外情况:

这是字符串变量,它显示异常类型。因此,如果我们得到404错误,exception文本将是简单的“错误”。同样,我们可能会得到“超时”,“中止”作为其他异常文本。


弃用通知: 从 jQuery 1.8开始,不推荐使用 jqXHR.success()jqXHR.error()jqXHR.complete()回调函数 你的代码为他们的最终消除,使用 jqXHR.done()jqXHR.fail(), 取而代之的是 jqXHR.always()

因此,如果您正在使用 JQuery 1.8或以上版本,我们将需要更新成功和错误函数逻辑,如:-

// Assign handlers immediately after making the request,
// and remember the jqXHR object for this request
var jqxhr = $.ajax("some_unknown_page.html")
.done(function (response) {
// success logic here
$('#post').html(response.responseText);
})
.fail(function (jqXHR, exception) {
// Our error logic here
var msg = '';
if (jqXHR.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (jqXHR.status == 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status == 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + jqXHR.responseText;
}
$('#post').html(msg);
})
.always(function () {
alert("complete");
});

希望能有帮助!

          cache: false,
url: "addInterview_Code.asp",
type: "POST",
datatype: "text",
data: strData,
success: function (html) {
alert('successful : ' + html);
$("#result").html("Successful");
},
error: function(data, errorThrown)
{
alert('request failed :'+errorThrown);
}

下面是如何取出 asp 错误。

              cache: false,
url: "addInterview_Code.asp",
type: "POST",
datatype: "text",
data: strData,
success: function (html) {
alert('successful : ' + html);
$("#result").html("Successful");
},
error: function (jqXHR, textStatus, errorThrown) {
if (jqXHR.status == 500) {
alert('Internal error: ' + jqXHR.responseText);
} else {
alert('Unexpected error.');
}
}

来自 jquery.com:

The jqXHR.success(), jqXHR.error(), and jqXHR.complete()
callback methods introduced injQuery 1.5 are deprecated
as of jQuery 1.8. To prepare your code for their eventual
removal, use jqXHR.done(), jqXHR.fail(), and jqXHR.always() instead.

如果需要全局处理程序,可以使用:

.ajaxStart(), .ajaxStop(),
.ajaxComplete(), .ajaxError(),
.ajaxSuccess(), .ajaxSend()

你在使用一个函数

error(error)

但是 jquery 实际上是在寻找一个有三个参数的函数:

error(jqXHR, textStatus, errorThrown)

您还需要添加两个参数。

另外: 请看看上面所有提到“不推荐”的评论:)

$.ajax("www.stackoverflow.com/api/whatever", {
dataType:"JSON"
data: { id=1, name='example' }
}).succes(function (result) {
// use result
}).error(function (jqXHR, textStatus, errorThrown) {
// handle error
});

你可以使用这样的东西:
注意: responseText返回服务器 responsestatusText返回预定义的
例如:
在某些框架(如 一二)中,responseText返回类似于 "Not Found (#404)"的内容,但是
返回 "Not Found" < strong > 。

$.ajax({
cache: false,
url: "addInterview_Code.asp",
type: "POST",
datatype: "text",
data: strData,
success: function (html) {
alert('successful : ' + html);
$("#result").html("Successful");
},
error: function (data) {
console.log(data.status + ':' + data.statusText,data.responseText);
}
});

这对我有用。

$.ajax({
type: 'POST',
url: url,
data: {
menu: str
},
beforeSend: function(){
$.notify("sorting", "info");
},
success: function(data) {
$.notify("success", "success");
},
error: function (data) {
$.notify("Opps!", "error");
}
});