样例代码:
//全局的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":"欢迎访问"}
//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({
希望与广大网友互动??
点此进行留言吧!