ajax数据正确返回码,jQuery - 拦截所有Ajax请求(统一处理超时、返回结果、错误状态码 )...

郎项禹
2023-12-01

样例代码:

hangge.com

//全局的ajax访问,处理ajax清求时session超时

$.ajaxSetup({

contentType:"application/x-www-form-urlencoded;charset=utf-8",

complete:function(XMLHttpRequest,textStatus){

//通过XMLHttpRequest取得响应头,sessionstatus,

var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus");

if(sessionstatus=="timeout"){

//如果超时就处理 ,指定要跳转的页面(比如登陆页)

window.location.replace("/login/index.php");

}

}

});

//获取数据

function getContent() {

$.get("content.php", function (data){

alert(data);

});

}

//登录或注销

function login(value) {

$.get("login.php",{"login":value} , function (data){

alert(data);

});

}

获取数据

登录

注销

一、统一处理返回结果

我们可以将超时或是其他异常情况放置在返回结果中,前台统一解析结果来进行各种异常处理。

1,后台返回数据样例

比如后台返回如下格式的 JSON 数据,包括正常情况和异常情况。

//正常数据返回

{"state":1, "msg":"", "data":"欢迎访问hangge.com"}

//session超时数据返回

{"state":-1, "msg":"session超时,请重新登录!"}

//异常情况数据返回

{"state":0, "msg":"服务器繁忙,请稍后再试。"}

2,前台处理样例

//全局的ajax访问,处理ajax清求时异常

$.ajaxSetup({

contentType:"application/x-www-form-urlencoded;charset=utf-8",

complete:function(XMLHttpRequest,textStatus){

//通过XMLHttpRequest取得响应结果

var res = XMLHttpRequest.responseText;

try{

var jsonData = JSON.parse(res);

if(jsonData.state == -1){

//如果超时就处理 ,指定要跳转的页面(比如登陆页)

alert(jsonData.msg);

window.location.replace("/login/index.php");

}else if(jsonData.state == 0){

//其他的异常情况,给个提示。

alert(jsonData.msg);

}else{

//正常情况就不统一处理了

}

}catch(e){

}

}

});

//获取数据

function getContent() {

$.get("content.php", function (data){

var jsonData = JSON.parse(data);

//只处理正常的情况

if(jsonData.state == 1){

alert(jsonData.data);

}

});

}

三、统一处理异常的HTTP状态码

我们还可以通过 Ajax 拦截,根据异常的 HTTP 状态码(404、500等)统一处理各种请求错误、服务器错误等情况。

$.ajaxSetup({

contentType:"application/x-www-form-urlencoded;charset=utf-8",

complete:function(XMLHttpRequest,textStatus){

},

statusCode: {

404:function() {

alert('数据获取/输入失败,没有此服务。404');

},

504:function() {

alert('数据获取/输入失败,服务器没有响应。504');

},

500:function() {

alert('服务器有误。500');

}

}

});

js拦截全局ajax请求

你是否有过下面的需求:需要给所有ajax请求添加统一签名.需要统计某个接口被请求的次数.需要限制http请求的方法必须为get或post.需要分析别人网络协议等等,那么如何做?想想,如果能够拦截所有a ...

js 拦截全局 ajax 请求

你是否有过下面的需求:需要给所有ajax请求添加统一签名.需要统计某个接口被请求的次数.需要限制http请求的方法必须为get或post.需要分析别人网络协议等等,那么如何做?想想,如果能够拦截所有a ...

Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求

Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求 >>>>>>>>>>>>>>&g ...

关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题

前段时间做一个项目,而项目中所有的请求都要用jquery 中的ajax请求或者post请求,但是开始处理一些简单操作还好,但是自己写了一些验证就出现问题了,比如表单提交的时候,要验证帐号的唯一性,所以 ...

phpStudy4——前端页面使用Ajax请求并解析php返回的json数据

项目需求: 在html页面显示所有用户列表信息. 需求分析: 1. html页面使用ajax向后端php请求用户数据 2. php脚本查询数据库,并将查询后的结果以json格式返回前端html页面 3 ...

Jquery progressbar通过Ajax请求获取后台进度演示

项目源代码下载:http://download.csdn.net/detail/nuptboyzhb/6262253 1.简介 本文主要演示Jquery progressbar的进度条功能.js通过a ...

spring security:ajax请求的session超时处理

当前端在用ajax请求时,如果没有设置session超时时间并且做跳转到登录界面的处理,那么只是靠后台是很难完成超时的一系列动作的:但是如果后台 没有封装一个ajax请求公共类,那么在ajax请求上下 ...

jQuery选择器,Ajax请求

jQuery选择器: $("#myELement") 选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement所以得到的是唯一的元素 $( ...

jquery中的ajax请求用法以及参数详情

url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 ...

随机推荐

Atititi 版本管理 rc final rtm ga release 软件的生命周期中一般分4个版本

Atititi 版本管理 rc final rtm ga release 软件的生命周期中一般分4个版本 RC=Release Candidate,含义是"发布候选版",它不是最终 ...

(22)odoo 安装旧模块报错处理

一些老版本的模块没有得到升级,所以经常碰到模块无法安装的问题. No module name osv 将模块的 from osv import osv,fields 改为 from openerp.o ...

Unity之屏幕画线

using UnityEngine;using System.Collections; public class DrawRectangle : MonoBehaviour { public Colo ...

Java处理InterruptedException异常小结

对于InterruptedException,一种常见的处理方式是捕捉它,然后什么也不做(或者记录下它,不过这也好不到哪去).不幸的是,这种方法忽略了这样一个事实:这期间可能发生中断,而中断可能导致应 ...

MySQL 统计信息

200 ? "200px" : this.width)!important;} --> 介绍 数据库维护统计信息的目的主要是为了优化器进行更好的执行优化,首先统计信息是建立在 ...

android怎样查看当前project哪些profile是打开的

代码project里面有三仅仅文件都是涉及到各个profile的宏的,各自是:featureoption.java.common/ProjectConfig.mk.product/ProjectCon ...

Chrome不支持showModalDialog模态对话框和无法返回returnValue的问题

父窗体部分js代码: var returnValue = window.showModalDialog("son.html ", window); //for chrome if ...

更换gitlab公网IP,引发的故障。

gitlab更换公网IP地址,导致gitlab非常的很卡,并且ssh方式添加的远程仓库是无法git pull 或者git push,只有是添加http方式的可以正常git pull和git push ...

SQL2008清空删除日志:

SQL2008清空删除日志: '在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式. USE [master] GO ALTER DATABASE DNName SET ...

Keepalived配置详解

Keepalived 配置文件解释 Keepalived的所有配置都在一个配置文件里面,主要分为三类: 全局配置 VRRPD配置 LVS 配置 配置文件是以配置块的形式存在,每个配置块都在一个闭合的{ ...

 类似资料: