`
pouyang
  • 浏览: 321575 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JavaScript语言精粹 字符串(example:js变量作为URL参数乱码)

阅读更多

  字符串可以被包含在单引号或双引号中,它可能包含0个或多个字符\(反斜线符号)是转义字符
  JavaScript在被创建的时候,Unicode是一个16位的字符集,所以JavaScript中的所有字符都是16位的.
  JavaScript没有字符类型,要表示一个字符,只须创建仅包含一个字符的字符串即可


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('修改失败!');
			}
		}
	});
}


//后台 控制层

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非常长,曾经考虑过把所有参数封装成一个变量传递过去,这种方法可行是可行,但是解决不了中文乱码的问题,以下附上这种方法.



//这种把对象o传递过去,o里的内容是json格式。
Object o = new Object()
o.user = document.getElementById("user");
o.password = document.getElementById("password");




//以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 传递过去,这种格式的在后台这样处理:


	
// 页面参数转化为Bean
String parameter = iRequest.getParameter("parameter");
			JSONObject jsonObject = JSONObject.fromObject(parameter);
			UserManagerDTO user = (UserManagerDTO) JSONObject.toBean(
					jsonObject, UserManagerDTO.class);
分享到:
评论

相关推荐

    JavaScript语言精粹.修订版 Javascript:The Good Parts 中英 pdf

    《JavaScript语言精粹》修订版还涵盖了JavaScript的最新发展,例如ES6及后续版本的新特性,如箭头函数、类、模板字符串、解构赋值等。此外,Douglas Crockford对语言中的一些"坏部分"(如with关键字和全局变量)进行...

    头歌教学实践平台 Web前端开发基础 JavaScript学习手册九:字符串

    JavaScript是Web前端开发的核心语言之一,它在网页交互、数据处理和动态效果实现等方面发挥着重要作用。本手册将深入探讨JavaScript中的字符串,这是编程中常用的数据类型,对于理解和操作文本至关重要。 一、字符...

    《JavaScript语言精粹》.pdf

    1. **基础语法**:JavaScript的基础语法类似于C++和Java,包括变量声明(var、let、const)、数据类型(字符串、数字、布尔值、null、undefined、对象、数组、Symbol等)、运算符(算术、比较、逻辑、赋值、三元)、...

    JavaScript语言精粹pdf

    1. **基础语法**:JavaScript的基础包括变量、数据类型(如字符串、数字、布尔值、null、undefined)、操作符、流程控制(条件语句和循环)、函数以及对象。这些构成了JavaScript编程的基本骨架。 2. **函数式编程*...

    JavaScript语言精粹.pdf.zip

    JavaScript,简称JS,是Web开发领域中最常用的一种脚本语言,尤其在前端开发中占据核心地位。这本书《JavaScript语言精粹》无疑是深入理解和掌握这门语言的重要参考资料。它旨在帮助开发者掌握JavaScript的核心概念...

    javaScript中的字符串操作

    ### JavaScript中的字符串操作知识点 #### 一、概述 在JavaScript编程中,字符串处理是一项非常基础且重要的技能。无论是用户输入的验证、DOM元素属性的读取与修改、还是Cookie的操作等场景,都离不开字符串的使用...

    JavaScript语言精粹 修订版 中文高清PDF

    此外,函数也可以作为一等公民,可以赋值给变量、作为参数传递或作为返回值,这是函数式编程思想在JavaScript中的体现。 对象和原型是JavaScript的特色,书中会讲解如何创建和操作对象,以及原型链的工作机制。理解...

    JavaScript语言教程:JavaScript 字符串

    **参数**: 可以接受多个字符串作为参数。 **返回值**: 返回连接后的新字符串。 **示例**: ```javascript let str1 = "Hello"; let str2 = "World"; console.log(str1.concat(" ", str2)); // 输出 "Hello World" ```...

    javascript语言精粹_修订版带书签.pdf

    2. **函数与闭包**:JavaScript中的函数是一等公民,可以作为参数传递,也可以作为返回值。闭包是JavaScript中的一个重要概念,它可以访问并保持对外部作用域的引用,是实现模块化和封装的关键。 3. **对象与原型**...

    javascript实现的字符串与十六进制表示字符串相互转换方法

    本文实例讲述了javascript实现的字符串与十六进制表示字符串相互转换方法。分享给大家供大家参考。具体如下: 之所以写这个,是因为发现SQL注入和XSS中经常利用十六进制表示的字符串,比如 SELECT CONCAT(0x68656c6...

    JavaScript语言精粹(修订版)

    在JavaScript的学习中,首先要了解它的基本语法,包括变量声明(var、let、const)、数据类型(如字符串、数字、布尔、null、undefined、对象、数组、函数)、流程控制(条件语句、循环语句)、函数和作用域。...

    JavaScript语言精粹.源代码

    8. **ES6及更新版本的新特性**:《JavaScript语言精粹》可能包括ECMAScript 6及其后续版本引入的新特性,如箭头函数、解构赋值、模板字符串、let/const、类、模块等。源代码将展示这些新特性的使用方式。 9. **错误...

    javascript处理json字符串和json对象的类(含示例)

    这个方法接收一个JSON字符串作为参数,返回的是解析后的JavaScript对象。例如: ```javascript let jsonString = '{"name": "John", "age": 30, "city": "New York"}'; let jsonObject = JSON.parse(jsonString); ...

    JavaScript语言精粹_修订版【高清】带书签 PDF

    JavaScript的核心概念包括变量、数据类型(如基本类型:字符串、数字、布尔值,以及引用类型:对象和数组)、操作符(算术、比较、逻辑等)、控制流程(条件语句、循环结构)、函数、以及事件处理。这些是编写...

Global site tag (gtag.js) - Google Analytics