JQuery $.ajax 捕获异常信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JQuery $.ajax 捕获异常信息相关的知识,希望对你有一定的参考价值。

参考技术A

转自 : http://blog.csdn.net/wenle006/article/details/7022240

(默认: 自动判断 (xml 或 html)) 请求失败时调用时间。参数有以下三个:XMLHttpRequest 对象、错误信息、(可选)捕获的错误对象、XMLResponse对象。如果发生了错误,错误信息(第二个参数)除了得到null之外,还可能是"timeout", "error", "notmodified" 和 "parsererror"。

状态码

eg:python cgi+js:
前端调用python 已经print result了,但是前端并没有收到,依然pendding,一直是 Provisional headers are shown ,当结束进程时,前端返回200,此时会把之前的result打印出来并附带了cgi的头,如下:导致textStatus为parsererror

可以使用: chrome://net-internals/#events 查看问题

使用 jQuery AJAX 捕获 404 状态

【中文标题】使用 jQuery AJAX 捕获 404 状态【英文标题】:Capture 404 status with jQuery AJAX 【发布时间】:2012-06-11 11:24:45 【问题描述】:

我有这个代码:

$.ajax( cache: false,
    url: "/Admin/Contents/GetData",
    data:  accountID: AccountID ,
    success: function (data) 
        $('#CityID').html(data);
    ,
    error: function (ajaxContext) 
        alert(ajaxContext.responseText)
    
);

我仍然对 ajaxContext 以及如何捕获 404 返回码感到困惑。不过我还有一个问题。我正在阅读有关成功和失败编码的内容,并且在最新版本的 jQuery 中不再使用错误。

所以我应该更改我的代码以使用完成并失败。那我怎么检查 404 呢?

【问题讨论】:

使用 .fail() 将如何工作? 【参考方案1】:

如下替换你的错误函数...

error:function (xhr, ajaxOptions, thrownError)
    if(xhr.status==404) 
        alert(thrownError);
    

【讨论】:

我之前遇到过错误:函数(jqXHR、textStatus、errorThrown)。 ajaxOptions 是否正确。应该是 textStatus 吗? 为我工作,不明白为什么不,但愿意以不同的方式被告知。 只是想注意这不适用于跨域调用。它将静默失败,并且不会执行“完成”或“错误”回调参数。 .fail 方法自 jQuery 1.7 起已弃用,您现在应该使用 .fail api.jquery.com/deferred.fail【参考方案2】:

404 错误将由连接到 error 属性的匿名函数处理。除了对 URL 的成功 HTTP 请求(即 2xx)之外的任何内容都会触发错误方法。以下将适用于您的目的:

error : function(jqXHR, textStatus, errorThrown)  
    if(jqXHR.status == 404 || errorThrown == 'Not Found') 
     
        console.log('There was a 404 error.'); 
    

当他们在 jQuery 文档中提到删除 successerror 函数时,他们指的是 jqXHR 类的函数,而不是 $.ajax() 的属性。

【讨论】:

但是 JayTee 对匿名函数的编码是否正确?我之前的尝试只是将一个变量 ajaxContent 放在函数后的 parathasis 中。 回调函数接受三个参数:jqXHR(在 jQuery 1.4.x 中,XMLHttpRequest)对象、描述发生错误类型的字符串和可选的异常对象。发生 HTTP 错误时,errorThrown 会接收 HTTP 状态的文本部分,例如“未找到”或“内部服务器错误”。

以上是关于JQuery $.ajax 捕获异常信息的主要内容,如果未能解决你的问题,请参考以下文章

如何捕获 jQuery AJAX 错误?

ajax请求后台代码,如何实现后台抛出异常在前台捕获异常:如后台抛出throw exception("该帖子已被删除")

基于ajax请求异常捕获

在 ajax 中捕获 laravel 验证异常

SpringBoot配置全局异常捕获

在 Chrome 中超时 Ext.Ajax.request 后未捕获的异常