TypeError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': String contains non ISO-8859...

今天线上遇到一个页面接口请求不报错,但是在浏览器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)); 问题解决!

你可能感兴趣的:(TypeError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': String contains non ISO-8859...)