jasmine214--love

只有当你的内心总是充满快乐、美好的愿望和宁静时,你才能拥有强壮的体魄和明朗、快乐或者宁静的面容。
posts - 731, comments - 60, trackbacks - 0, articles - 0
http://pouyang.javaeye.com/blog/575245 
字符串可以被包含在单引号或双引号中,它可能包含0个或多个字符\(反斜线符号)是转义字符
  JavaScript在被创建的时候,Unicode是一个16位的字符集,所以JavaScript中的所有字符都是16位的.
  JavaScript没有字符类型,要表示一个字符,只须创建仅包含一个字符的字符串即可


Js代码 复制代码
  1. alert( "A"  ==  "\u0041" ); //true   
  2. alert( "seven" .length);  // 5   
  3. "o" + "y" + "p"  ==  "oyp" ; //true;   
  4. "oyp" .toUpperCase() ==  'CAT' ;  


字符串是不可变的,一旦字符串被创建,就永远无法改变它,跟java一样,所以语言都是相通的



现在流行的异步提交,丰富多彩的互联网,现在不仅程序员享受着这种异步交互带来的成就感,客户也很期待也很享受Ajax的强大的交互功能,异步提交难免会出现js变量(中文)作为URL参数,js变量作为URL参数传到后台会出现中文乱码情况,(Jquery form动态提交不会出现乱码问题),异步请求过去会得到,以下是解决方法


Js代码 复制代码
  1. //前台   
  2. var  accountCN = "中文" ;   
  3. var  account = encodeURI(encodeURI(accountCN)); // 关键所在   
  4. var  updateURL =  "http://localhost:7001/ouyangping/demo.do?account=" account   
  5. function  updateRow(updateURL) {   
  6.     $.ajax( {   
  7.         type :  "POST" ,   
  8.         url :updateURL,   
  9.         cache :  false ,   
  10.         dataType:  "json" ,   
  11.         success :  function  updateSuceess(data) {   
  12.            
  13.                
  14.              if  (data.state ==  '1' ) {   
  15.                 alert( '修改成功!' );   
  16.             }  else  {       
  17.                 alert( '修改失败!' );   
  18.             }   
  19.         }   
  20.     });   
  21. }  


//后台 控制层

Java代码 复制代码
  1. String  account = java.net.URLDecoder.decode(iRequest.getParameter("account"),"utf-8");//关键所在   
  2. JSONObject json = new JSONObject();   
  3. json.clear();   
  4. iResponse.setHeader("X-JSON", json.toString());   
  5. iResponse.setCharacterEncoding("UTF-8");   
  6. iResponse.setHeader("Cache-Control""no-cache,must-revalidate");// 清楚缓存   
  7. iResponse.setHeader("Pragma""no-cache"); // HTTP 1.0   
  8. iResponse.setDateHeader("Expires"0); // prevents caching at the   
  9. //更新是否成功   
  10. //int state = userManagerService.modUserByYui(userManagerDTO);   
  11. int state = userManagerService.modUserByYui(userManagerDTOJS);   
  12. json.put("state",state);   
  13. try {   
  14.     iResponse.getWriter().print(json.toString());   
  15. catch (IOException e) {   
  16.     e.printStackTrace();   
  17. }   
  18. return null;  

------------------------

  有了两个关键所在,就可以处理中文乱码问题了.但是很多地方都要处理,所以也要重构下
  这也带来了问题,如果URL后面的参数过多那么会导致URL非常长,曾经考虑过把所有参数封装成一个变量传递过去,这种方法可行是可行,但是解决不了中文乱码的问题,以下附上这种方法.



Js代码 复制代码
  1. //这种把对象o传递过去,o里的内容是json格式。   
  2. Object o = new Object()   
  3. o.user = document.getElementById("user");   
  4. o.password = document.getElementById("password");  




Js代码 复制代码
  1. //以Json格式获取页面上的查询条件,且这些参数的name要一致   
  2. function getJsonParameters(page) {   
  3.     $('input:text').each(function(){    
  4.         this.value = jQuery.trim(this.value);   
  5.         }   
  6.     );    
  7.     var parameters = document.getElementsByName('form1');   
  8.     var parameter = "{";   
  9.     for (var i = 0 ; i < parameters.length; i++ ) {   
  10.         if (parameters[i].value != null && parameters[i].value != '') {   
  11.             parameter += parameters[i].id +":'"+parameters[i].value+"',";   
  12.         }   
  13.     }   
  14.     if (''+page != 'undefined'){   
  15.         parameter +='page'+":'"+page+"',";   
  16.     }   
  17.     parameter += "}";   
  18.     return parameter;   
  19. }  

o 或者 parameter 传递过去,这种格式的在后台这样处理:


Java代码 复制代码
  1.        
  2. // 页面参数转化为Bean   
  3. String parameter = iRequest.getParameter("parameter");   
  4.             JSONObject jsonObject = JSONObject.fromObject(parameter);   
  5.             UserManagerDTO user = (UserManagerDTO) JSONObject.toBean(   
  6.                     jsonObject, UserManagerDTO.class);  

只有注册用户登录后才能发表评论。


网站导航: