样例代码:
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、统一处理返回结果
咱们能够将超时或是其余异常状况放置在返回结果中,前台统一解析结果来进行各类异常处理。javascript
1,后台返回数据样例
好比后台返回以下格式的 JSON 数据,包括正常状况和异常状况。php
//正常数据返回
{"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);
}
});
}
3、统一处理异常的HTTP状态码
咱们还能够经过 Ajax 拦截,根据异常的 HTTP 状态码(40四、500等)统一处理各类请求错误、服务器错误等状况。html
$.ajaxSetup({java