u634781
2009-09-02 16: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 23:06
    最佳回答

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

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

    评论
    解决 无用
    打赏 举报
查看更多回答(2条)

相关推荐 更多相似问题