先给出ajax完整的调用和获取错误信息的方式
function queryData(searchPageNum){
__showLoading();
var json =getQueryParameter(searchPageNum);
$.ajax({
type: "POST",
url: "../userFilter/queryUser.action",
contentType : "application/json",
dataType:"json",
data: JSON.stringify(json),
success: function(resp){
alert("success");
},
error:function(XMLHttpRequest, textStatus, errorThrown){
debugger
// 状态码
console.log(XMLHttpRequest.status);
// 状态
console.log(XMLHttpRequest.readyState);
// 错误信息
console.log(textStatus);
__hideLoading();
if(XMLHttpRequest.readyState==0){
// 对应登录超时问题,直接跳到登录页面
location.href='../Login.action';
}else{
$.messager.alert('提示','系统内部错误,请联系管理员处理!','info');
}
}
});
}
第一种情况页面控制台是 XMLHttpRequest.status:200 XMLHttpRequest.readyState:4 textStatus:parsererror 针对此种情况可能是下面三种原因: 1)返回内容格式与ajax请求中声明的不一致,声明的dataType是txt,但是返回的实际是json dataType:"json",是否前后台数据类型保持了一致 如下面的实例,dataType是txt,但是返回的是json 请求内容: 返回内容: 2)后台代码内部处理问题 后台代码报错: 前台返回时空 3)在后台请求进行了页面跳转或下载等功能,ajax不支持;因为ajax请求获取的数据的都是字符串(此点当时在调试页面的时候,Response响应中满是乱码的字符串文本),它没法解决后台返回的文件流,也就是无法实现文件的下载功能
第二种情况是登陆超时的情况,此时会先报如下错误
POST http://localhost:8080/rsbi/userFilter/queryUser.action net::ERR_CONNECTION_REFUSED
然后
XMLHttpRequest.status:0
XMLHttpRequest.readyState:0
textStatus:error
此时就是调用被拒绝了,可能是服务没有启动 或者没登录或者,登陆后超时,那么可以跳转到登录页面,如下
location.href='../Login.action';
更多推荐
ajax请求进入error的原因分析
发布评论