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

meo*_*meo 49 jquery

我必须修改别人写的项目.因为代码很乱,我无法真正改变这个$ .post()(或用$ .ajax()替换它).我需要做的是知道帖子是否返回其他内容然后返回JSON并返回它.

$.post('balbal.html', json, function(data) { ... my coude ... }, 'json')
Run Code Online (Sandbox Code Playgroud)

我可以在console.log中看到post响应.有一种简单的方法来检索它吗?

inc*_*ick 117

在帖子后立即定义错误回调.请注意结尾处的分号放置.

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

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

对于旧版本的jQuery(1.8之前版本)使用.error而不是相同的语法.

  • @John以及今后来这里的任何人,如果你这样做.fail(res)你可以再做res.responseText来访问错误信息. (5认同)

Phi*_*ler 13

有几种方法可以做到这一点,但是如果你没有通过返回的JSON数据对象获得错误响应,你可以使用$ .ajaxSetup()来通过jQuery 定义所有 ajax调用的默认值.尽管该$.post()方法本身并未指定错误处理程序或回调,但该$.ajaxSetup()方法将捕获任何ajax错误并执行您为其定义的函数.

或者,还有一个$ .ajaxError()函数可以执行相同的操作.

请注意,如果正确返回JSON响应但使用服务器端错误代码,则无法执行此操作.如果要捕获这些类型的案例,最好使用$ .ajaxComplete()方法查找它们