在java开发中,我们往往需要统一处理异常信息,跳转到某一个错误提示页面。
然而,通过ajax调用后台时,后台抛出异常后,页面却没有跳转到异常页面,原因是后台异常时,没有正确向ajax返回信息,
这时,ajax就会走到error处理方法。
这种问题怎么解决呢,下面用代码举例:
失败时,返回页面的jsp为:/view/error/notAuthorize.jsp
ajax代码:
$.ajax({
type: "GET",
url: "${path}/off/getScheduleJson.action?random=Math.random",
data: {day:data},
dataType: "json",
success: function(data){
success();//成功时的处理方法
},
error: function(data){
error(data);//失败时的处理方法
}
});
下面主要说失败时的处理方法:
function error(data){
var result = data.responseText;
if(result !=null && result !=''){//后台异常时,并在后台捕获
var url = getRootPath()+"/view/error/notAuthorize.jsp";//获取工程路径
location.href = url;
//$(document.body).html(result);
}else{//后台异常,且没有被捕获
clickautohide(5);
}
}
//js获取项目根路径,如:http://localhost:8099/UniqueduHome
function getRootPath(){
//获取当前网址,如: http://localhost:8099/UniqueduHome/view/error/notAuthorize.jsp
var curWwwPath=window.document.location.href;
//获取主机地址之后的目录,如: UniqueduHome/view/error/notAuthorize.jsp
var pathName=window.document.location.pathname;
var pos=curWwwPath.indexOf(pathName);
//获取主机地址,如: http://localhost:8099
var localhostPaht=curWwwPath.substring(0,pos);
//获取带"/"的项目名,如:/UniqueduHome
var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1);
return(localhostPaht+projectName);
}