关于Ajax responseText 的一点阐述
2007-05-10 10:46
381 查看
前一段时间碰到这样的的问题,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 不支持中文。至少在我的程序里面是这样子的。希望大家可以借鉴以下。
用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 不支持中文。至少在我的程序里面是这样子的。希望大家可以借鉴以下。
相关文章推荐
- 关于AJAX请求JSON数据(解决responseText空的问题)
- 关于ajax中responseText不能返回脚本的问题。
- AJAX中关于responseText乱码问题
- 关于在AJAX中GET回的ResponseText中文乱码的最简解决办法
- 关于在AJAX中GET回的ResponseText中文乱码的最简解决办法
- 关于ajax的responseText乱码的问题
- 关于Ajax 中response出现302的一点见解
- ajax引擎对象通过responseText属性 或者responseXML属性 接收服务器回送的数据
- 关于Response.Write输出的一点讨论!
- 使用ajax时responseText返回的是整个页面的编码
- 关于AJAX构架的一点构想
- ajax response 系统错误时responseText出现一堆代码
- ie ajax responseText 为null的问题
- AJAX在ResponseText后出现乱码的解决方法
- 关于ajax的一点疑问
- 通过回调函数获取AJAX的responseText
- ajax的responseText乱码的问题的解决方法
- AJAX responseText乱码解决
- 对于ajax的responseText方法获取服务器中文本内容出错
- 关于XMLHttpRequest对象的responseText属性