jQuery-使用.post()进行错误处理

我必须修改其他人编写的项目。 因为代码是一团糟,所以我无法真正更改此$ .post()(或将其替换为$ .ajax())。 我需要做的是知道帖子是否返回其他内容,然后返回JSON并返回。

$.post('balbal.html', json, function(data) { ... my coude ... }, 'json')

我可以在console.log中看到回复。 有没有简单的方法来检索它?

meo asked 2020-02-14T03:04:55Z
3个解决方案
114 votes

在发布后立即定义错误回调。 请注意仅在最后放置分号。

$.post('balbal.html', json, function(data) {
    // ... my code ...
})
.fail(function(response) {
    alert('Error: ' + response.responseText);
});

[http://api.jquery.com/deferred.fail/]

对于旧版本的jQuery(1.8之前的版本),请使用.error代替,使用相同的语法。

incognick answered 2020-02-14T03:17:31Z
13 votes

有两种方法可以执行此操作,但是如果您无法通过返回的JSON数据对象获得错误响应,则可以使用$ .ajaxSetup()定义所有通过jQuery进行的ajax调用的默认值。 即使$.post()方法本身未指定错误处理程序或回调,但$.ajaxSetup()方法仍将捕获任何ajax错误并执行您为其定义的功能。

另外,还有一个$ .ajaxError()函数将执行相同的操作。

请注意,如果您的JSON响应正确返回但带有服务器端错误代码,则此方法将无效。 如果要捕获此类情况,最好使用$ .ajaxComplete()方法查找它们。

Phil.Wheeler answered 2020-02-14T03:17:02Z
2 votes

您可以使用$.ajax()$.post是一种无论如何最终都会调用它的快捷方式),并定义错误回调。

或者,如果您真的不想这样做,请致电

$.ajaxError(function(){
   //error handler
})

在那之前$.post

Victor answered 2020-02-14T03:18:00Z
translate from https://stackoverflow.com:/questions/2697719/error-handling-with-post