您的位置:首页 > Web前端 > JavaScript

jsp之间传值乱码问题

2016-06-28 17:50 281 查看
tree.jsp页面:

function myreset(){
var node = zTree.getSelectedNodes()[0];
$.ajax({
type: "GET",
url:"upd.jsp",
data: "treeId=" +node.id+"&nodeName="+node.name,
dataType: "text",
success: function(data){
hideRMenu();
}

});
}

upd.jsp 页面:

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page language="java" import="java.util.*, java.sql.*" pageEncoding="utf-8"%>

<%
//连接MySQL数据库

Connection conn = com.zy.test.pojo.Node.getConn();
Statement st = conn.createStatement();
String idno=request.getParameter("treeId");
//中文乱码解决
String name = new String(request.getParameter("nodeName").getBytes("ISO-8859-1"),"UTF-8");
//修改节点名字
String sql="update menu set name=? where id=?";
ResultSet rs = null;
PreparedStatement pstmt = null;
try{
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setString(2, idno);
pstmt.executeUpdate();
conn.commit();
}catch (SQLException e) {
e.printStackTrace();
}
com.zy.test.pojo.Node.closeAll(rs, pstmt, conn);
%>


结果在servlet页面中打印是问号,网上查这边是乱码。

解决方法如下:

function myreset(){
var node = zTree.getSelectedNodes()[0];
<span style="color:#ff0000;"><strong>var name_ = node.name;</strong></span>
$.ajax({
type: "POST",
url:"upd.jsp",
data: "treeId=" +node.id+"&nodeName="+name_,
contentType: "application/x-www-form-urlencoded; charset=utf-8", 
dataType: "text",
success: function(data){
hideRMenu();
}

});
}


upd.jsp 改为如下:

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page language="java" import="java.util.*, java.sql.*" pageEncoding="utf-8"%>

<%
//连接MySQL数据库

Connection conn = com.zy.test.pojo.Node.getConn();
Statement st = conn.createStatement();
String idno=request.getParameter("treeId");
request.setCharacterEncoding("UTF-8");
//中文乱码解决
//String name = new String(request.getParameter("nodeName").getBytes("ISO-8859-1"),"UTF-8");
String name = request.getParameter("nodeName");
//修改节点名字
String sql="update menu set name=? where id=?";
ResultSet rs = null;
PreparedStatement pstmt = null;
try{
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setString(2, idno);
pstmt.executeUpdate();
conn.commit();
}catch (SQLException e) {
e.printStackTrace();
}
com.zy.test.pojo.Node.closeAll(rs, pstmt, conn);
%>


该了三点:

1、get改为post

2、增加contentType: "application/x-www-form-urlencoded; charset=utf-8", 代码段

3、servlet中去掉String name = new String(request.getParameter("nodeName").getBytes("ISO-8859-1"),"UTF-8")改为request.setCharacterEncoding("UTF-8");

4、容易忽略的一点,js中直接把name获取出来,然后在赋值,而不是直接取数,标红的部分

问题解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: