项目中common.js中有一段ajax异常处理方法:
$(document).ajaxComplete(function(event,xhr,options) { if (xhr.statusText=="parsererror") { top.location.href="/admin"; } });
有一个异常页面的ajax请求如下:
$.ajax({ type :"post", url :"XXXXXXXXXXXXXXXXXXXXXXXXXXXXX", timeout : 40000, data: "null", error : function(XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); alert('读取超时,请检查网络连接'); }, dataType : "json", success : function(data){ alert("1"); } });
上述的代码一直进入error,并且
alert(textStatus);
弹出的一直是parsererror
alert(XMLHttpRequest.readyState);
弹出4正常
最后发现弹出parsererror的原因是类型的问题,也就是说可能是返回类型出问题了。
果然进过查找,发现在struts.xml文件中的ajax请求的action中的result返回类型不是json.而是跳转页面String类型。
记录此次异常处理,以上。