`
xiemingmei
  • 浏览: 207670 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

jQuery.ajax什么时候执行error

阅读更多
查看了源码:

 
// If successful, handle type chaining
        if (status >= 200 && status < 300 || status === 304) {

            // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
            if (s.ifModified) {

                if ((lastModified = jqXHR.getResponseHeader("Last-Modified"))) {
                    jQuery.lastModified[ifModifiedKey] = lastModified;
                }
                if ((etag = jqXHR.getResponseHeader("Etag"))) {
                    jQuery.etag[ifModifiedKey] = etag;
                }
            }

            // If not modified
            if (status === 304) {

                statusText = "notmodified";
                isSuccess = true;

                // If we have data
            } else {

                try {
                    success = ajaxConvert(s, response);
                    statusText = "success";
                    isSuccess = true;
                } catch(e) {
                    // We have a parsererror
                    statusText = "parsererror";
                    error = e;
                }
            }
        } else {
            // We extract error from statusText
            // then normalize statusText and status for non-aborts
            error = statusText;
            if (!statusText || status) {
                statusText = "error";
                if (status < 0) {
                    status = 0;
                }
            }
        }

        // Set data for the fake xhr object
        jqXHR.status = status;
        jqXHR.statusText = "" + (nativeStatusText || statusText);

        // Success/Error
        if (isSuccess) {
            deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);
        } else {
            deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);
        }

        // Status-dependent callbacks
        jqXHR.statusCode(statusCode);
        statusCode = undefined;

        if (fireGlobals) {
            globalEventContext.trigger("ajax" + (isSuccess ? "Success" : "Error"), [jqXHR, s, isSuccess ? success : error]);
        }



得出结论:

1、statusCode是2xx时,会执行success回调函数;
2、statusCode是304时,会执行success回调函数;
3、statusCode为其他值,则会执行error回调函数;
4、datatype如果是json,而转换成json出错时会调用error回调函数。




403-禁止访问:
如果后台在认证拦截器中返回403, 则ajax则会执行回调error。
这样就可以在success函数专注写处理逻辑,把未登录无权限的提示放到error方法中处理,
以达到代码逻辑清晰内聚的效果。



分享到:
评论

相关推荐

    jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法

    jquery中ajax请求后台数据成功后既不执行success也不执行error,此外系统报错:Uncaught SyntaxError: Unexpected identifier at Object.success,但后台能够返回数据,原代码如下: var source=[]; $.ajax({ ...

    jquery $.ajax各个事件执行顺序

    1.ajaxStart(全局事件) 2.beforeSend 3.ajaxSend(全局事件) 4.success 5.ajaxSuccess(全局事件) 6.error 7.ajaxError (全局事件) 8.complete 9.ajaxComplete(全局事件) 10.ajaxStop(全局事件)

    空格或者空白字符导致$.ajax()报parseerror错误小结

    您可能感兴趣的文章:JQuery ajax中error返回错误及一直返回error的解答jquery中ajax使用error调试错误的方法ASP.NET中MVC使用AJAX调用JsonResult方法并返回自定义错误信息Jquery ajax执行顺序 返回自

    jQuery 1.4.1 中文参考

    10.2.2 ajaxError(callback) 175 10.2.3 ajaxSend(callback) 176 10.2.4 ajaxStart(callback) 176 10.2.5 ajaxStop(callback) 177 10.2.6 ajaxSuccess(callback) 177 10.3 其它 178 10.3.1 jQuery.ajaxSetup(...

    jquery的ajax请求全面了解

    比如.ajaxComplete()——请求完成时.ajaxError()——请求失败时.ajaxSend()——在Ajax请求发送时附加一个function去执行.ajaxStart()——请求开始时,.ajaxStop()——请求结束时.ajaxSuccess()——请求成功时.load()...

    jquery中ajax使用error调试错误的方法

    JQuery使我们在开发Ajax应用程序的时候提高了效率,减少了许多兼容性问题,我们在Ajax项目中,遇到ajax异步获取数据出错怎么办,我们可以通过捕捉error事件来获取出错的信息。 jquery中ajax的常用用法类似于: $...

    jQuery中$.ajax()方法参数解析

    本文实例为大家讲解了jQuery $.ajax()方法参数,供大家参考,具体内容如下 $.ajax({ url:'test.do', data:{id:123,name:'xiaoming'}, type:'post', dataType:'json', success:function(data){ alert&#40;...

    ajax-utils:用于 jQuery ajax 的包装器

    ajax-utils 我们经常使用ajax函数。 但这有点痛苦。... // some parameters for jQuery.ajax // You don't have to write "type", "sucess", "error" or "complete" } AjaxUtils.post(params, fun

    jQuery 1.6 API 中文版

    这个回调函数得到2个参数: jqXHR (in jQuery 1.4.x, XMLHTTPRequest) 对象和一个描述成功请求类型的字符串("success", "notmodified", "error","timeout", or "parsererror") 。在jQuery 1.5, complete设置可以...

    JQuery ajax中error返回错误及一直返回error的解答

     Jquery中的Ajax的async默认是true(异步请求),如果想一个Ajax执行完后再执行另一个Ajax, 需要把async=false就可以了  于时我在ajax中进行了处理  async: false,结果发现提交正常的数据返回是正常的没有错误。  ...

    jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序

    7.ajaxError (全局事件) 8.complete(局部事件) 9.ajaxComplete(全局事件) 10.ajaxStop(全局事件) 其中,全局事件可以在ajax相关方法外引用(比如,通过该方式将ajax执行各个阶段的信息显示在页面某个地方)。 下...

    jquery ajax请求实例深入解析

    比如.ajaxComplete()——请求完成时.ajaxError()——请求失败时.ajaxSend()——在Ajax请求发送时附加一个function去执行.ajaxStart()——请求开始时,.ajaxStop()——请求结束时.ajaxSuccess()——请求成功时.load()...

    ajaxupload

    1.修复之前存在的一些bug, 2.修复了对ie的兼容, 3.增加了对jquery10的兼容 handleError: function (s, xhr, status, e) { ... jQuery(s.context) : jQuery.event).trigger("ajaxError", [xhr, s, e]); } },

    jQuery 1.5 API 中文版

    $.ajaxError( fn( event, XHR, options, thrownError ) ) $.ajaxSend( fn( event, XHR, options ) ) $.ajaxStart( fn( ) ) $.ajaxStop( fn( ) ) $.ajaxSuccess( fn(event, XHR, options) ) Miscellaneous str....

    jquery $.ajax()取xml数据的小问题解决方法

    开始的代码如下: 代码如下: $.ajax({ type: “get”, url: “Database/App_all.xml”, dataType: “xml”, ... }, error: function () { alert&#40;“ajax failed!”&#41;; } }); 也就是,从App_all.xml这个文件中找到

    jquery实现的ajax文件上传功能

    jquery实现的ajax文件上传功能 $.ajaxFileUpload ( { url:'doajaxfileupload.php', secureuri:false, fileElementId:'fileToUpload', dataType: 'json', success: function (data, ...

    jquery ajax中使用jsonp的限制解决方法

    jsonp 解决的是跨域 ajax 调用...今天,发现 jsonp 的另外一个限制(在jquery ajax的场景下) —— 不会触发 $.ajax 的error callback,示例代码如下: 代码如下:$.ajax({ dataType: ‘jsonp’, error: function (xh

    JQuery实现ajax上传文件示例源码20121029

    JQuery实现ajax上传文件示例源码 源码描述: url用来指定后台处理的程序,fileElementId指的是文件选择框的ID,dataType用来指定返回的数据格式,支持xml、script、json和html。 返回的json的格式最简单:{error:'...

    jquery.waterfall:连续运行参数中给出的函数,每个函数将其结果传递给下一个函数

    如何使用连续调用 3 个请求: $.waterfall(function() { $.ajax({url : first_url}) },function() { $.ajax({url : second_url}) },function() { $.ajax({url : another_url}) }).fail(function(error) {console.log...

Global site tag (gtag.js) - Google Analytics