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)); 问题解决!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容