从页面发送数据到后台传递的值是中文结果乱码,页面的编码是utf8了,而且编码过滤器也弄出utf8了,
html代码:
<select id="select1" name="cgy" onchange="chang(this.options[this.selectedIndex].text)">
<option>请选择分类</option>
<option>鞋</option>
<option>手机</option>
<option>电脑</option><option>服装</option>
<option>书籍</option>
</select>javascript代码:
<script type="text/javascript">
function chang(str){
var msg=str;
var url="<%=request.getContextPath()%>/loadmessage.action?msg="+msg;
send_request(url,msg);
}
var http_request = false;
function send_request(url,msg)
{ //初始化、指定处理函数、发送请求的函数
//alert("url\t"+url);
http_request = false;
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest)
{ //Mozilla 浏览器
http_request = new XMLHttpRequest();
if(http_request.overrideMimeType)
{//设置MiME类别
http_request.overrideMimeType('text/xml');
}
}
else if(window.ActiveXObject)
{ // IE浏览器
try
{
http_request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){}
}
}
if(!http_request)
{ // 异常,创建对象实例失败
window.alert("不能创建XMLHttpRequest对象实例.");
return false;
}
http_request.onreadystatechange = processRequest;
// 确定发送请求的方式和URL以及是否同步执行下段代码
http_request.open("POST", url, true);
http_request.setrequestheader("Content-length",msg.length);
http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
http_request.send(msg);
}
// 处理返回信息的函数
function processRequest()
{
if (http_request.readyState == 4)
{ // 判断对象状态
if (http_request.status == 200)
{ // 信息已经成功返回,开始处理信息
}
}
}
</script>
在action里面System.out.println("参数是:"+this.getMsg());结果是问号。
html代码:
<select id="select1" name="cgy" onchange="chang(this.options[this.selectedIndex].text)">
<option>请选择分类</option>
<option>鞋</option>
<option>手机</option>
<option>电脑</option><option>服装</option>
<option>书籍</option>
</select>javascript代码:
<script type="text/javascript">
function chang(str){
var msg=str;
var url="<%=request.getContextPath()%>/loadmessage.action?msg="+msg;
send_request(url,msg);
}
var http_request = false;
function send_request(url,msg)
{ //初始化、指定处理函数、发送请求的函数
//alert("url\t"+url);
http_request = false;
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest)
{ //Mozilla 浏览器
http_request = new XMLHttpRequest();
if(http_request.overrideMimeType)
{//设置MiME类别
http_request.overrideMimeType('text/xml');
}
}
else if(window.ActiveXObject)
{ // IE浏览器
try
{
http_request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){}
}
}
if(!http_request)
{ // 异常,创建对象实例失败
window.alert("不能创建XMLHttpRequest对象实例.");
return false;
}
http_request.onreadystatechange = processRequest;
// 确定发送请求的方式和URL以及是否同步执行下段代码
http_request.open("POST", url, true);
http_request.setrequestheader("Content-length",msg.length);
http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
http_request.send(msg);
}
// 处理返回信息的函数
function processRequest()
{
if (http_request.readyState == 4)
{ // 判断对象状态
if (http_request.status == 200)
{ // 信息已经成功返回,开始处理信息
}
}
}
</script>
在action里面System.out.println("参数是:"+this.getMsg());结果是问号。
解决方案 »
- java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] (未知)不是一个有效的路径
- 关于spring getHibernateTemplate().save 的问题
- struts 文件上传
- ssh 开发,为什么我提交登陆后总是转不到我要的页面
- [300分]为什么在hql中使用select new Orderinfo(A.orderid,A.ordername,1) ...."为什么在构造函使用固定值时报没有匹配参数的构造函
- 如何写漂亮的代码?
- struts标签<bean:write>的问题.
- 急急急!!!!!!一个sessionListener的问题
- Web Services的登陆设计问题~
- tomcat报错,急需要解决!!
- 学JAVA的女程序员好找工作不?
- struts2新手入门问题,请教
改为:var url=" <%=request.getContextPath()%>/loadmessage.action?msg="+encodeURI(msg);
var url="<%=request.getContextPath()%>/loadmessage.action?msg="+encodeURI(msg); 2>.
在Action中对msg URLDecoder。
归纳一下:有三点注意:
1.统一用utf-8;
2.js发送数据一定要是encodeURI(msg)
3.注意get和post的区别,get和直接写在url里面的,不会被过滤器过滤。而post会。
var url=" <%=request.getContextPath()%>/loadmessage.action?msg="+<%=URlEncoder.encode(msg)%>;
后台:
request.setCharacterEncoding("utf-8");
UrlDecoder.decode(request.getParameter("msg"));