Posted on 2010-06-27 19:17
幻海蓝梦 阅读(1445)
评论(0) 编辑 收藏 所属分类:
JS
http://pouyang.javaeye.com/blog/575245
字符串可以被包含在单引号或双引号中,它可能包含0个或多个字符\(反斜线符号)是转义字符
JavaScript在被创建的时候,Unicode是一个16位的字符集,所以JavaScript中的所有字符都是16位的.
JavaScript没有字符类型,要表示一个字符,只须创建仅包含一个字符的字符串即可
-
alert(
"A"
==
"\u0041"
);
-
alert(
"seven"
.length);
-
"o"
+
"y"
+
"p"
==
"oyp"
;
-
"oyp"
.toUpperCase() ==
'CAT'
;
alert("A" == "\u0041");//true
alert("seven".length); // 5
"o"+"y"+"p" == "oyp";//true;
"oyp".toUpperCase() == 'CAT';
字符串是不可变的,一旦字符串被创建,就永远无法改变它,跟java一样,所以语言都是相通的
现在流行的异步提交,丰富多彩的互联网,现在不仅程序员享受着这种异步交互带来的成就感,客户也很期待也很享受Ajax的强大的交互功能,异步提交难免会出现js变量(中文)作为URL参数,js变量作为URL参数传到后台会出现中文乱码情况,(Jquery form动态提交不会出现乱码问题),异步请求过去会得到,以下是解决方法
-
-
var
accountCN =
"中文"
;
-
var
account = encodeURI(encodeURI(accountCN));
-
var
updateURL =
"http://localhost:7001/ouyangping/demo.do?account="
account
-
function
updateRow(updateURL) {
-
$.ajax( {
-
type :
"POST"
,
-
url :updateURL,
-
cache :
false
,
-
dataType:
"json"
,
-
success :
function
updateSuceess(data) {
-
-
-
if
(data.state ==
'1'
) {
-
alert(
'修改成功!'
);
-
}
else
{
-
alert(
'修改失败!'
);
-
}
-
}
-
});
-
}
//前台
var accountCN ="中文";
var account = encodeURI(encodeURI(accountCN));// 关键所在
var updateURL = "http://localhost:7001/ouyangping/demo.do?account="account
function updateRow(updateURL) {
$.ajax( {
type : "POST",
url :updateURL,
cache : false,
dataType: "json",
success : function updateSuceess(data) {
if (data.state == '1') {
alert('修改成功!');
} else {
alert('修改失败!');
}
}
});
}
//后台 控制层
- String account = java.net.URLDecoder.decode(iRequest.getParameter("account"),"utf-8");
- JSONObject json = new JSONObject();
- json.clear();
- iResponse.setHeader("X-JSON", json.toString());
- iResponse.setCharacterEncoding("UTF-8");
- iResponse.setHeader("Cache-Control", "no-cache,must-revalidate");
- iResponse.setHeader("Pragma", "no-cache");
- iResponse.setDateHeader("Expires", 0);
-
-
- int state = userManagerService.modUserByYui(userManagerDTOJS);
- json.put("state",state);
- try {
- iResponse.getWriter().print(json.toString());
- } catch (IOException e) {
- e.printStackTrace();
- }
- return null;
String account = java.net.URLDecoder.decode(iRequest.getParameter("account"),"utf-8");//关键所在
JSONObject json = new JSONObject();
json.clear();
iResponse.setHeader("X-JSON", json.toString());
iResponse.setCharacterEncoding("UTF-8");
iResponse.setHeader("Cache-Control", "no-cache,must-revalidate");// 清楚缓存
iResponse.setHeader("Pragma", "no-cache"); // HTTP 1.0
iResponse.setDateHeader("Expires", 0); // prevents caching at the
//更新是否成功
//int state = userManagerService.modUserByYui(userManagerDTO);
int state = userManagerService.modUserByYui(userManagerDTOJS);
json.put("state",state);
try {
iResponse.getWriter().print(json.toString());
} catch (IOException e) {
e.printStackTrace();
}
return null;
------------------------
有了两个关键所在,就可以处理中文乱码问题了.但是很多地方都要处理,所以也要重构下
这也带来了问题,如果URL后面的参数过多那么会导致URL非常长,曾经考虑过把所有参数封装成一个变量传递过去,这种方法可行是可行,但是解决不了中文乱码的问题,以下附上这种方法.
-
- Object o = new Object()
- o.user = document.getElementById("user");
- o.password = document.getElementById("password");
//这种把对象o传递过去,o里的内容是json格式。
Object o = new Object()
o.user = document.getElementById("user");
o.password = document.getElementById("password");
-
- function getJsonParameters(page) {
- $('input:text').each(function(){
- this.value = jQuery.trim(this.value);
- }
- );
- var parameters = document.getElementsByName('form1');
- var parameter = "{";
- for (var i = 0 ; i < parameters.length; i++ ) {
- if (parameters[i].value != null && parameters[i].value != '') {
- parameter += parameters[i].id +":'"+parameters[i].value+"',";
- }
- }
- if (''+page != 'undefined'){
- parameter +='page'+":'"+page+"',";
- }
- parameter += "}";
- return parameter;
- }
//以Json格式获取页面上的查询条件,且这些参数的name要一致
function getJsonParameters(page) {
$('input:text').each(function(){
this.value = jQuery.trim(this.value);
}
);
var parameters = document.getElementsByName('form1');
var parameter = "{";
for (var i = 0 ; i < parameters.length; i++ ) {
if (parameters[i].value != null && parameters[i].value != '') {
parameter += parameters[i].id +":'"+parameters[i].value+"',";
}
}
if (''+page != 'undefined'){
parameter +='page'+":'"+page+"',";
}
parameter += "}";
return parameter;
}
o 或者 parameter 传递过去,这种格式的在后台这样处理:
-
-
- String parameter = iRequest.getParameter("parameter");
- JSONObject jsonObject = JSONObject.fromObject(parameter);
- UserManagerDTO user = (UserManagerDTO) JSONObject.toBean(
- jsonObject, UserManagerDTO.class);