u634781 2009-09-02 08:09
浏览 219
已采纳

客户端可以解决Ajax的中文处理问题吗?

是这样的,要发送异步请求去拖取一些资料,但是返回包里面有中文,导致处理不了(比如用substring之类的函数得不到意料之内的结果),前台代码如下:
[code="javascript"]
ajax_get('test.php', cb);
function cb(data)
{
alert(data);
}

function ajax_get(url, callback)
{

var xhr = createXMLHttpRequest();
var raw_data;
var value;
if (xhr)
{
xhr.open("GET", url, false);
xhr.setrequestheader("content-type","application/x-www-form-urlencoded; charset=utf-8");
xhr.send(null);
raw_data = xhr.responseText;
value = callback(raw_data);
return value;
}
else
{
return 0;
}
}

function createXMLHttpRequest() {
var XMLhttpObject = null;
if (window.XMLHttpRequest) {
XMLhttpObject = new XMLHttpRequest()
}
else {
var MSXML = [
'Msxml2.XMLHTTP.7.0',
'Msxml2.XMLHTTP.6.0',
'Msxml2.XMLHTTP.5.0',
'Msxml2.XMLHTTP.4.0',
'MSXML2.XMLHTTP.3.0',
'MSXML2.XMLHTTP',
'MSXML.XMLHTTP',
'MICROSOFT.XMLHTTP.1.0',
'MICROSOFT.XMLHTTP.1',
'Microsoft.XMLHTTP'
];
for (var i = 0; i < MSXML.length; i++) {
try {
XMLhttpObject = new ActiveXObject(MSXML[i]);
break;
}
catch(ex) {}
}
}
return XMLhttpObject;
}
[/code]
返回包如图:

[img]http://dl.iteye.com/upload/attachment/142023/f0628a4f-f646-3114-be27-a6c0c2f600e0.jpg[/img]
其中title和name都是中文的,但是显示不了。不能修复服务器端的代码,不知道单单从客户端可不可以解决呢?

展开全部

  • 写回答

3条回答 默认 最新

  • 成富 2009-09-04 15:06
    关注

    这肯定是要去服务端来解决的。你首先需要检查服务器端是不是正确的设置了返回的JSON数据的编码格式。我觉得很大可能是服务端用的是gb2312的编码,而浏览器端尝试用UTF-8去解析,所以就出错了。这个时候需要设置content-type:aplication/json; charset=gb2312。这样浏览器会正确的去解码它。

    如果服务端代码一点都不能改的话,就只能在浏览器端用代码自己来转了,可以参考[url]http://hi.baidu.com/sjncer/blog/item/2093d46d3f19c1fe42169402.html[/url]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部