今天线上遇到一个页面接口请求不报错,但是在浏览器network中也看不到请求的问题,检查了后端服务,网关等一系列问题后,都没有找到原因。最后在ajax中加了一个complete函数,
$.ajax({
url: g_serverPath + "api/annou/list",
type: 'GET',
data: postData,
async: true,
dataType: "json",
contentType: "application/json;charset=UTF-8",
beforeSend: function(XHR) {
XHR.setRequestHeader("tenantId", userInfo.tenantId);
XHR.setRequestHeader("userId", encodeURIComponent(userInfo.userId));
XHR.setRequestHeader("userName", userInfo.userName);
XHR.setRequestHeader("token", userInfo.token);
},
success: function(data) {
if (data.status) {
// TODO
} else {
console.log(data.msg);
}
},
complete: function(jqXHR, textStatus){
// jqXHR 是经过jQuery封装的XMLHttpRequest对象
// textStatus 可能为:null、'success'、 'notmodified'、 'error'、 'timeout'、 'abort'或'parsererror'等
// alert( "ajax()" + textStatus );
}
})
断点查看了具体报错:
TypeError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': String contains non ISO-8859-1 code point.
后面发现是
XHR.setRequestHeader("userName", userInfo.userName);
用户名中文时,导致的请求报错,改为
XHR.setRequestHeader("userName", encodeURIComponent(userInfo.userName));
问题解决!