ajax请求进入error的原因分析

ajax请求进入error的原因分析

先给出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';

相关文章

2021埃及足球世界排名:第46,积分1432(附队员名单)
365bet.com最快线路检测中心

2021埃及足球世界排名:第46,积分1432(附队员名单)

📅 07-17 👁️ 3214
夏日绝句原文、翻译及赏析、拼音版及朗读
365bet娱乐app

夏日绝句原文、翻译及赏析、拼音版及朗读

📅 07-08 👁️ 5720
苹果的iOS在哪里?教你轻松找到并了解
365bet.com最快线路检测中心

苹果的iOS在哪里?教你轻松找到并了解

📅 07-15 👁️ 3395
九种常见参类 你能认出几个?它们功效各不同
365bet娱乐app

九种常见参类 你能认出几个?它们功效各不同

📅 07-09 👁️ 9876
世說新語/忿狷
beat365官方入口

世說新語/忿狷

📅 07-26 👁️ 2430
摩托车年审最长可以逾期多久
365bet.com最快线路检测中心

摩托车年审最长可以逾期多久

📅 07-24 👁️ 1885