`
xiemingmei
  • 浏览: 209409 次
  • 性别: 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.unobtrusive-ajax.rar

    2. **事件处理**:库内部监听`ajaxStart`、`ajaxSend`、`ajaxSuccess`、`ajaxError`等事件,提供了对Ajax请求生命周期的控制。开发者可以通过自定义事件处理器来扩展功能或处理错误。 3. **内容替换**:默认情况下...

    jQuery.Ajax 与action交互

    **jQuery.AJAX 与Action交互详解** 在Web开发中,前端与后端的数据交互是不可或缺的一部分,jQuery.AJAX 提供了一种高效且灵活的方式来实现客户端与服务器端的异步通信。本篇文章将深入探讨如何使用jQuery.AJAX与...

    详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()

    在深入探讨Jquery中的Ajax函数之前,我们先简要了解Ajax(Asynchronous JavaScript and XML)的概念。Ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。这使得Web应用程序可以更加流畅地运行,...

    ajaxFileUpload 报这错jQuery.handleError is not a function

    然而,从jQuery 1.8版本开始,这个方法已被废弃,取而代之的是使用`$.ajax.error`或新的Promise API中的`.fail()`方法来处理错误。 解决这个问题的方法有几种: 1. **回退jQuery版本**:如果你的应用程序依赖于`...

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

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

    jquery.form.js

    1. **异步表单提交**:`jquery.form.js`允许开发者通过AJAX方式提交表单,避免了页面刷新,使得用户界面保持活跃。使用`$.ajaxSubmit()`或`$("#form").submit(function() { ... })`方法,可以轻松实现异步提交。 2....

    jquery.form.js和使用说明

    在Web开发中,jQuery是一个极其强大的JavaScript库,它极大地简化了DOM操作,事件处理以及Ajax交互等任务。而jQuery Form Plugin是jQuery的一个扩展,专门为表单处理提供了丰富的功能,包括异步提交表单、表单验证...

    jQuery.spin.js自定义页面加载Loading动画代码

    在网页开发中,用户体验是至关重要的,特别是在处理大量数据或者执行长时间操作时,为了不让用户感到界面卡顿或无响应,通常会使用“加载中”(Loading)动画来提示用户程序正在后台工作。jQuery.spin.js就是一个...

    jquery.from.js & juery.js

    在网页开发中,jQuery是一个非常重要的JavaScript库,它极大地简化了DOM操作、事件处理、动画效果以及Ajax交互等任务。本文将深入探讨jQuery Form插件(即`jquery.form.js`)及其核心库`jquery.js`,并结合实际应用...

    jquery文件上传js:jquery.form.js

    1. **Ajax化文件上传**:`jquery.form.js`将传统的表单提交转变为Ajax方式,使得文件上传无需刷新页面,提供更好的用户体验。 2. **异步上传**:利用Ajax技术,文件上传可以在后台进行,用户可以继续浏览其他页面,...

    jquery-ajax实例

    在JavaScript的世界里,jQuery是一个非常流行的库,它极大地简化了DOM操作、事件处理以及Ajax交互。本实例聚焦于"jQuery-AJAX",这是一项核心功能,用于在不刷新整个页面的情况下与服务器交换数据并更新部分网页内容...

    使用jQuery.form插件,实现完美的表单异步提交

    此外,`$.fn.ajaxSubmit`方法还可以接受一个完整的jQuery.ajax选项对象,这意味着你可以使用所有jQuery的Ajax选项,如`cache`、`timeout`、`contentType`等,来定制你的异步请求。 总结一下,jQuery.form插件通过...

    jquery.ajax 传参数到mvc的action

    在Web开发中,jQuery是一个广泛使用的JavaScript库,它极大地简化了DOM操作、事件处理和Ajax交互。Ajax(Asynchronous JavaScript and XML)技术允许我们在不刷新整个页面的情况下与服务器进行数据交换,提高用户...

    jquery form jquery.form.js

    jQuery Form插件主要由`jquery.form.js`脚本组成,它扩展了jQuery的$.ajax方法,提供了一种更加简单易用的方式来处理表单的异步提交。在压缩包中,源代码位于`src/jquery.form.js`,而压缩包的`dist`目录下提供了...

    jquery.ui.autocomplete-Ajax

    **jQuery UI Autocomplete AJAX** jQuery UI的Autocomplete组件是一个强大的功能,它允许用户在输入时自动填充建议选项,极大地提高了用户体验。这个组件尤其适用于搜索框、表单输入和其他需要动态获取数据的场景。...

    jquery.form.js下载_jquery.form.js上传文件插件下载

    jQuery.form.js是一款基于jQuery库的插件,它为开发者提供了方便、灵活的表单处理功能,尤其在异步(AJAX)提交表单方面表现出色。这款插件使得在网页上实现无刷新的文件上传和数据提交变得简单易行,大大提升了用户...

    jquery.mloading.zip

    通常,我们会将jQuery库链接到CDN,然后在页面底部添加jquery.mloading.js的引用,确保在DOM加载完成后执行插件代码。例如: ```html &lt;script src="https://code.jquery.com/jquery-3.6.0.min.js"&gt;&lt;/script&gt; ...

    jquery.form.min.js

    在Web开发中,jQuery是一个非常流行的JavaScript库,它简化了DOM操作、事件处理、动画以及Ajax交互等任务。而在处理表单(form)相关的操作时,jQuery Form插件是不可或缺的一部分。在给定的压缩包文件中,我们看到...

    jquery.upload.js

    《使用jQuery.upload.js实现上传功能详解》 在Web开发中,文件上传是一个常见的需求,而jQuery.upload.js是一款基于jQuery的轻量级插件,它极大地简化了文件上传的实现过程,使得开发者能够快速构建功能丰富的文件...

Global site tag (gtag.js) - Google Analytics