二八中医
二八中医
  • 发布:2014-11-03 10:55
  • 更新:2019-12-06 23:42
  • 阅读:4663

XMLHttpRequest乱码

分类:HTML5+

iOS和android,采用XMLHttpRequest进行Post访问,返回的数据中文都是乱码,英文和阿拉伯可以正常显示,更改setRequestHeader编码后,返回数据依然是乱码,代码如下

var xhr;
var callback;

        function getFlusDataXHR(request_url, callback_in) {  
            callback = callback_in;  
            xhr = new plus.net.XMLHttpRequest();  
            xhr.onreadystatechange = xhrStatechange;  
            xhr.responseType = 'json';  
            xhr.open("GET", request_url);  

            xhr.setRequestHeader('Content-Type','application/json;charset=gbk');  
            //  xhr.timeout=5000;  
            xhr.send();  

            setTimeout(abortFluxDataXHR, 6000);  
        }  

        function abortFluxDataXHR() {  
            if (xhr) {  
                xhr.abort();  
                xhr = null;  
            }  
        }  

        function xhrStatechange() {  
            if (xhr == null || xhr.readyState == null) {  
                if (callback) {  
                    callback();  
                }  
                mui.alert("流量信息请求失败,xhr is null");  
                return;  
            }  
            switch (xhr.readyState) {  
                case 4:  

// alert(xhr.getAllResponseHeaders());
if (xhr.status == 200) {
try {
var data = xhr.responseText;
flux_sum = 0;
flux_used = 0;
flowviewer_fluxinfo = {
usingPkg: [],
usedPkg: [],
unusedPkg: []
};
if (data == 'null') {
return;
}
fluxCalculator(data);
sortFluxInfo();
initFluxUI(callback);
} catch (e) {
if (callback) {
callback();
}
mui.alert('流量信息更新失败\n' + e.message);
}
} else {
if (callback) {
callback();
}
mui.alert("流量信息请求失败,错误代码\n" + xhr.readyState);
}
xhr = null;
break;
default:
break;
}
}

        /**  
            根据手机号码获取流量信息  
        **/  
        function getFluxInfo(msisdn, callback) {  
                            msisdn=15159207615;  
            getFlusDataXHR("http://211.143.192.138:8090/daf_ser/pkgflow?msisdn=" + msisdn + "&month=" + getCurrentMonth(), callback);  
        }  

/**  
            获取当前月份  
        **/  
        function getCurrentMonth() {  
            var d = new Date();  
            var str = d.getFullYear();  
            var m = d.getMonth() + 1;  
            if (m < 10) {  
                m = '0' + m;  
            }  
            return str + '' + m;  
        }  
2014-11-03 10:55 负责人:无 分享
已邀请:
Antecer

Antecer

我也碰到了,使用HBuilder内带的例程xhr.html,只是改了下url地址,然后url指向的目标网站是gbk编码的,获取的数据全部显示为 带问号的方块!

1***@qq.com

1***@qq.com

你们找到解决方法没?我也遇到了啊。烦。

二八中医

二八中医 (作者)

太早了,忘记当时怎么做了。。

bianyuan456

bianyuan456

xhr.overrideMimeType( "charset=utf-8" );
试试这个

该问题目前已经被锁定, 无法添加新回复