同一页面js向jsp传值乱码和页面跳转?
我这是同一页面传值js向jsp传值 function Mapvalue(v){ newURL="?dotfile="+v; window.open(newURL); } 这是jsp接收的 String fileMaptxt = request.getParameter("dotfile"); 现在又两个问题,传中文到jsp得到的值是乱码,还有我是同一页面传值怎样让页面不跳转的情况下把值还能传过去就是每次执行传值的时候不要新开一个页面??
我这是同一页面传值js向jsp传值 function Mapvalue(v){ newURL="?dotfile="+v; window.open(newURL); } 这是jsp接收的 String fileMaptxt = request.getParameter("dotfile"); 现在又两个问题,传中文到jsp得到的值是乱码,还有我是同一页面传值怎样让页面不跳转的情况下把值还能传过去就是每次执行传值的时候不要新开一个页面??
答案:传中文需要先编码的,例如newURL="?dotfile="+escape(v); 这是用escape就行的编码,
此外也可以用encodeURI() 或encodeURIComponent()
其他:在原来页面打开新界面,不弹出新窗口:window.location = newURL; 传中文到jsp得到的值是乱码 用escape()编码
同一页面传值让页面不跳转的情况下把值还能传过去就是每次执行传值的时候不要新开一个页面
用一个隐藏的iframe 打你newURL。 1、escape对ansi码0-255以外的字符进行编码输出%u****格式即unicode值,escape 方法返回一个包含了 charstring 内容的字符串值( Unicode 格式)。所有空格、标点、重音符号以及其他非 ASCII 字符都用 %xx 编码代替,其中 xx 等于表示该字符的十六进制数。例如,空格返回的是 "%20"
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
2、encodeURI类似escape,用于地址栏编码
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
3、encodeURIComponent用于地址栏编码。将文本字符串编码为一个统一资源标识符 (URI) 的一个有效组件。它是将中文、韩文等特殊字符转换成utf-8格式的url编码,如果你的页面编码是gb2312的话,服务器端接收的将是乱码.
encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
所以js使用数据时可以使用escape,对于地址栏数据,最好用encodeURIComponent进行编码
例如:
前台jsp中js:
var str="method=submit2&type="+type+"&typep="+typep;
str=encodeURI(str);
var tempAction='ImageServlet.do?+str;
document.myform.action=tempAction;
后台java代码:
String typep=HttpServletRequest.getSession().getAttribute("typep");//不同的框架不同得到参数方式。
typep= java.net.URLDecoder.decode(typep,"UTF-8");//Decoder.decode();解码
上一个:jsp文件无法显示图片,源代码如下: <%@ page pageEncoding="UTF-8"%> <img src="f:\1.jpg">
下一个:<meta name="author" content="JspRun! Team and JspRun UI Team" />是什么意思