扩展jQuery的方法统一处理AJAX调用过程中产生的异常错误信息

由于项目中大量的实用了.post方法,而该方法默认不对请求的异常进行处理,后期又要处理该问题。前期的解决方案是将使用.post请求都改造为$.ajax请求,但由于两个方法的实现(需要的参数)等相差很大,修改起来很麻烦!

期间尝试使用定义“AJAX 请求发生错误时执行函数($(document).ajaxError())”

的方式来解决问题,但影响范围太大,长轮询发生的错误也被捕获,导致页面一打开就弹出系统异常的对话框。

所以这里采用扩展jQuery的方法的技术来解决问题:

/* 扩展jQuery.post方法
 * 用于支持错误处理,原来使用$.post的地方只需要改为$.postEx即可,不需要做其它改动;
 * 如果需要单独处理异常,请将第四个参数设置为异常处理函数;
 */
jQuery.extend({
    postEx:function(requestUrl, sendData, successCallback, errorCallback) {
        if (typeof errorCallback === ‘undefined‘){
            errorCallback = ajaxErrorEx;
        }

        $.ajax({
            url: requestUrl,
            data: sendData,
            type: "post",
            cache: false,
            dataType: ‘json‘,
            timeout: 30000,
            success: successCallback,
            error: errorCallback
        });
    }
});

统一异常处理:原来使用.post的地方只需要改为.postEx即可,不需要做其它改动;

单独处理异常:如果需要单独处理异常,请将第四个参数设置为异常处理函数;

时间: 2024-12-20 20:22:38

扩展jQuery的方法统一处理AJAX调用过程中产生的异常错误信息的相关文章

想抛就抛:Application_Error中统一处理ajax请求执行中抛出的异常

女朋友不是想抛就抛,但异常却可以,不信请往下看. 今天在MVC Controller中写代码时,纠结了一下: public async Task<ActionResult> Save(int? postId) { if(!IsOwner(postId.Value, userId)) { //抛不抛异常呢? } } 在这个地方要不要抛异常呢? 如果不抛异常,就得这么写: public async Task<ActionResult> Save(int? postId) { if(!I

Ajax请求过程中显示“进度”的简单实现

Ajax在Web应用中使用得越来越频繁.在进行Ajax调用过程中一般都具有这样的做法:显示一个GIF图片动画表明后台正在工作,同时阻止用户操作本页面(比如Ajax请求通过某个按钮触发,用户不能频繁点击该按钮产生多个并发Ajax请求):调用完成后,图片消失,当前页面运行重新编辑.以下图为例,页面中通过一个Load链接以Ajax请求的方式加载数据(左).当用户点击该链接之后,Ajax请求开始,GIF图片显示“Loading“状态,同时当前页面被“罩住”防止用户继续点击Load按钮(中):Ajax请求

Android Java 与 C++ 调用过程中的常量,路径名、文件名、后缀名最大长度

/**************************************************************************** **************************************************************************** *** ***   This header was automatically generated from a Linux kernel header ***   of the same

函数递归调用过程中的调用堆栈的情况

为了加深对函数递归调用过程中的理解,本Demo程序特意在VS2008 C#控制台程序实现了阶乘的计算功能,用于观察函数递归调用过程中的调用堆栈的情况. 源码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace RecursiveTset { class Program { //阶乘的定义:n!=n*(n-1)!,特别的,1!=1:0!=1 //阶乘的实

[JQuery] Ajax使用过程中的问题总结

JQuery提供的ajax函数,在使用过程中,因为对参数的不了解,导致了很多错误,现在总结如下,以便时常温固,不犯同样的错误. 1.我在项目中使用到的ajax请求格式如下: 1 $.ajax({ 2 url: 3 data: 4 contentType: 5 dataType: 6 type: 7 complete:function(res, textStatus, jqXHR){ 8 if(textStatus != 'success'){ 9 10 } 11 }, 12 error:func

变量和方法调用过程中会出现的参数传递

变量对于基本数据类型来说变量名和值同时存储于栈内存里面的一块空间之中 对于引用类型来说则是栈内存里面的变量指向堆里面的实际对象,在栈中的变量来说变量名和指向对象的地址存在同一块内存里面. 方法的参数和基本类型变量都是存储于栈中的 对于方法来说进入方法开辟空间,方法执行完退出则回收内存,很明显方法中的参数,变量的作用域问题 方法的参数又包括基本类型和引用类型,对于两种不同的参数来说在参数的传递过程中是基本类型的值被copy后传进去也即是值传递, 而引用类型来说传递的是引用也就是他的地址,从某方面来

ajax异步参数详解及alax错误信息error分析

一.$.ajax()的参数列表 ↑ 下面是Jquery中AJAX参数详细列表: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. type String (默认: "GET") 请求方式 ("POST" 或 "GET"), 默认为 "GET".注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持. timeout Number 设置请求超时时间(毫秒).

统一处理jquery ajax请求过程中的异常错误信息的机制

当jQuery ajax向服务器发送请求,服务器发生异常,比如:400.403.404.500等异常,服务器将异常响应给客户端,此时的ajax可以获取异常信息并进行处理,但此时我们一般是跳转到与异常编码对应的异常页面,对异常集中展现与处理. 首先,发送ajax请求: $.ajax({ type: ‘POST’, url: url, data: data, success: success, dataType: dataType }); 然后,服务发生异常,将对应的异常编码响应给客户端: resp

扩展jQuery的方法

备忘用的: (function ($) { $.extend($.fn, { clearError : function () { if (this.parent("span").length > 0) { this.removeClass("validError").parent("span").find("label.error").remove(); } else { this.removeClass("