首页 > 开发 > AJAX > 正文

关于Ajax responseText 的一点阐述

2020-09-19 11:09:54
字体:
来源:转载
供稿:网友
前一段时间碰到这样的的问题,ajax从后台得到的中文信息怎么都是空。后来到网上搜资料,大多是以下这样。

用ajax来get回一个页面时,responsetext里面的中文多半会出现乱码,这是因为xmlhttp在处理返回的responsetext的时候,是把resposebody按utf-8编码进解码考形成的,如果服务器送出的确实是utf-8的数据流的时候汉字会正确显示,而送出了gbk编码流的时候就乱了。解决的办法就是在送出的流里面加一个header,指明送出的是什么编码流,这样xmlhttp就不会乱搞了。

php:header('content-type:text/html;charset=gb2312');
asp:response.charset("gb2312")
jsp:response.setheader("charset","gb2312");


但是我按照在这种方法,无论如何都没有成功过。真是误人子弟啊。先把我的代码贴出来。
public void doget(httpservletrequest request, httpservletresponse response)
throws servletexception, ioexception
...{
/** *//**
* 设置请求的编码格式,因为ajax程序默认都是通过utf-8编码传递字符,所以在接收字符前,请设置请求的编码格式为 utf-8
*/
request.setcharacterencoding("utf-8");
/** *//**
* 设置输出信息格式,因为ajax在接收返回的信息的时候,默认的也是utf-8编码,所以返回时,请设置编码格式为utf-8 如果你要返回的是
* xml 信息,即ajax调用responsexml 则用下面语句代替 该语句
* response.setcontenttype("text/xml;charset=utf-8");//返回的xml文件
*/
response.setcontenttype("text/text;charset=utf-8"); // 返回的是文本信息

printwriter out = response.getwriter();
// out.println("</response>");
if (rs == true)
out.write("<returninfor><return>true</return><infor>用户名称不能为空</infor></returninfor>");

out.close();
}


前台很简单:
<script language="javascript">
alert( "返回的信息为:"+xmlreq.responsetext )
</script>


就是这样,无论如何都得不到中文。不知何故。

后来把后台的 response.setcontenttype("text/text;charset=utf-8"); // 返回的是文本信息,改成 xml 传递,则运行正常。

后来发现的确如此 responsetext 不支持中文。至少在我的程序里面是这样子的。希望大家可以借鉴以下。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表