ajax用post提交中文乱码问题(待补充)
来源:互联网 发布:如何申请顶级域名 编辑:程序博客网 时间:2024/06/05 02:17
主要问题是在jsp页面,需要ajax提交数据到后台,但在数据传到后台接收后输出乱码,主要解决办法:在jsp页面用到接收中encodeURI或者escape方法进行编码。jsp页面代码如下:
(部分js):
<script>
var xmlHttp;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
function sub(){
var type = document.getElementById("type");//从页面获得的中文变量
alert(type.value);
//将订单信息提交到后台,验证是否可以预定
createXMLHttpRequest();
var url = "OrderCanServlet";
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlHttp.onreadystatechange = callback;
xmlHttp.send("type=" + encodeURI(encodeURI(type.value)));//注意!!!用了两次encodeURI!!!
//alert("提交成功");
}
function callback() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
alert(xmlHttp.responseXML);
var message = xmlHttp.responseXML.getElementsByTagName("message")[0].firstChild.data;
setMessage(message);
}
}
}
function setMessage(message) {
alert(message);
}
</script>
后台servlet接收后需要对数据进行解码,如果单纯的用request.getParameter("type")解码一次显然是不行的,因为前台进行了两次编码,所以用到java.net.URLDecoder.decode();代码如下:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/xml;charset=UTF-8");
PrintWriter out = response.getWriter();
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
System.out.println(java.net.URLDecoder.decode(request.getParameter("type"), "UTF-8"));//两次解码!!!!
String message = "200";
response.setHeader("Cache-Control", "no-cache");
out.println("<?xml version='1.0' encoding='" + "UTF-8" + "'?>");
out.println("<response>");
out.println("<message>" + message + "</message>");
out.println("</response>");
out.flush();
out.close();
}
- ajax用post提交中文乱码问题(待补充)
- Ajax使用POST提交中文乱码问题
- Ajax使用POST提交中文乱码问题
- Ajax使用POST提交中文乱码问题(转)
- Ajax使用POST提交中文乱码问题(转)
- JSP+ MySQL中文乱码问题(post提交乱码问题)
- ajax post中文乱码问题
- ajax提交中文乱码问题
- Ajax提交中文乱码问题
- ajax返回中文乱码,servlet中的显示乱码,post提交的乱码问题,编码大总结
- AJAX在post提交时,IE浏览器提交中文乱码问题
- Post 提交中文乱码问题和GET提交乱码问题
- 解决ajax post提交乱码问题
- spring mvc post提交中文乱码问题
- 解决POST提交中文乱码问题
- 解决post、get提交中文乱码问题
- get提交中文,post提交中文乱码问题
- AJAX下Post表单(解决中文乱码问题)
- 循环的一些细节
- 欢迎进入Android多进程时代
- 模拟退火算法TSP
- spring源码编译和导入eclipse
- dynamic_cast的用法
- ajax用post提交中文乱码问题(待补充)
- C++ 虚函数 虚继承
- python实现清华大学联网助手(三)——linux下带参数的自定义命令/import机制
- 《数据结构编程实验》 4.1.1Calendar
- 尊敬的用户:您访问的域名有误或网页不存在,您可以使用我们提供的以下服务
- 问题解决:java.sql.SQLException:Value '0000-00-00' can not be represented as java.sql.Date
- [算法第一轮复习] 并查集 + 路径压缩
- Quartz 2D绘图基本用法
- 什么是线程安全和线程不安全