今天遇到一个让我一开始无从下手的问题, 页面form中有一个名为备注的textarea,
这里边可以有换行,也就有了回车符.这个form提交到DB后再以ajax的方式从DB中取出备注的信息, 在jsp页面中用javascript里的eval转换成JavaScript的对象时出问题了,那个回车符在eval里捣乱了!
怎么办? 不让用户在备注里换行就没有了回车符,但业务要求应该可以换行的.
首先想到了encode,但怎么与javascript里的eval整合? 对这个encode究竟怎么用也不熟悉.
也想到了javascript里的escape/unescape,但这个escape是把那些特殊符号换成"%"形式的值?
就是换成了在eval里又会不会给eval有影响?试了试, 出错了, 也不知道为什么没有报错信息,是因为在ajax的回调函数里执行的原因?
但这也不应该对eval或escape的执行有影响的.
是不是eval的过?
想到了json里的JSON.parse()方法,那样的话得引入一个json框架,仅仅为了这么点小事,有些过了吧?顺便也记下来,看http:
//www.json.org/js.html里的描述时,有这么一句话:var myObject = eval('(' + myJSONtext
+ ')'); 这个eval什么时候加" '('
",什么时候又不用加? 以前的项目中都加的,而现在项目又不加了, 这加与不加有什么本质的区别?
..................
后来边搜边试,想用很笨的方法, 把ajax返回的字符串在eval前把里面的回车符("\r\n" 或"\n")替换成一个特殊的字符--比如说@,
再在真正赋值时再把这个替换来的@换成"\r\n"或"\n". (顺便再问下"\r\n"与"\n"有什么区别?
隐约记得"\r\n"是Unix下的换行而"\r\n"是windows下的换行,真的是这样吗?
http://javaeye-mao.iteye.com/blog/211354里有这较为详细的描述,http:
//bytes.com/topic/net/answers/613564-difference-between-carriage-return-r
-new-line-n这里边也些讨论.)
但在具体实施里又有了问题, 由于在试这种方案前想着用escape来着,
这样jsp文件里有试escape时离下的痕迹.
但违反了"谋定而行,行且坚毅"的原则,没有把escape清除掉.这样在试"替换"方案里有了干扰.再一次验证了"谋定而行,行且坚毅"的重要性.
清除escape的干扰后,在把@再次替换成回车符时有了麻烦事, 我用这样的方式: content.replace(/@/g,"\r\n"),
不行,"\r\n"在textarea里原样显示.换成"\\r\\n",还是不行,原样显示.来点狠的,再加一个"\",即"\\\r\\\n",起作
用换行了,但在textarea里显示效果是多了一个"\". 呵!! 你真狠! 用两个"\\"时不起作用,
用三个时又过了,总不能让我用2.5个"\"吧??? 这怎么办? 强忍着"疼痛",近似绝望地试了试"\\n",嘿,成了!!
姑且不管为什么, 能用了就行.
于是往配置库里checkin了刚改的jsp文件.
分享到:
相关推荐
1. **回车符与换行符**:在JavaScript中,回车符(`\r`)和换行符(`\n`)通常用来表示新行。如果在`eval()`的字符串参数中存在这些字符,它们会被解释为代码的分隔符,可能导致代码执行错误或不按预期运行。因此,...
12. SQL BETWEEN操作符:BETWEEN用于选取介于两个值之间的数据,与之等价的表达式是`工资>=1200 AND 工资,所以A选项正确。 13. Excel删除操作:在Excel中,按Del键仅删除单元格中的数据,保留单元格本身,因此C...
#### 一、项目背景与目标 本项目旨在通过JavaScript技术实现一个简易的计算器功能,使用户能够进行基础的数学运算(加、减、乘、除)。该项目不仅锻炼了开发者对于HTML、CSS及JavaScript基础知识的应用能力,还涉及...
此次将长期的思考、感悟,多年的系统开发、设计和团队管理经验,以及深入分析众多项目实战的宝贵成果和盘托出,力求将编程思想与具体实践融为一体,提炼出适合于广大读者快速理解和彻底掌握.NET软件开发的最佳学习...
此次将长期的思考、感悟,多年的系统开发、设计和团队管理经验,以及深入分析众多项目实战的宝贵成果和盘托出,力求将编程思想与具体实践融为一体,提炼出适合于广大读者快速理解和彻底掌握.NET软件开发的最佳学习...
1. 退出Visual FoxPro的操作方法:退出应用程序可以通过多种方式实现,包括从文件菜单中选择退出选项,点击窗口关闭按钮,或者在命令窗口中输入QUIT命令并回车。所有这些方法都是正确的。 2. BufferedWriter的...
- 空格和回车是最常用的分隔符。 **正确答案**:D. 空格或回车 #### 题目16:软件需求规格说明书作用 - **知识点**:软件需求规格说明书的作用。 - 用于明确软件的功能需求和技术需求。 - 是软件开发过程中重要...
- **内存DLL**:与动态链接库交互。 - **重载API函数**:允许同一个函数名对应不同的实现。 - **API回调函数**:定义回调函数以响应特定事件。 - **模式匹配函数**:支持正则表达式匹配。 - **模式表达式语法**:...
`getchar()`函数用于从标准输入读取一个字符,但只读取一个,所以输入'a'后,`c1`被赋值为'a',而`c2`会读取到上一个字符,即回车符。因此,A选项是正确的。 2. 第二道题目涉及Word2003的文本格式化。要将文档中...
// 最后,去除最后一个不必要的分隔符 types = types.slice(0, -1); // 如果你希望以逗号分隔,可以使用types.replace(/\|$/, ','); ``` 最后,我们将介绍jQuery的异步请求(Ajax)方法,这使得我们可以向服务器...
- **DOM Injection**:与 DOM 相关的注入攻击涉及对文档对象模型的恶意修改,例如通过修改表单元素的状态来执行未授权的操作。 - **XML Injection**:XML 注入攻击是指攻击者利用 XML 文档中的漏洞来注入恶意数据...
4. **输入数据分隔符**:在程序中,通常使用空格或回车作为键盘输入多个数据之间的分隔符。 5. **字符串比较**:在VBScript中,`X$Y`表示字符串X是否包含在字符串Y中,如果Y的开头是X,则返回`.T.`(True)。 6. *...
13. 嵌入式换行符:<IMG SRC="jav ascript:alert('XSS');">,攻击者可以使用嵌入式换行符 inject 恶意脚本。 14. 嵌入式回车:<IMG SRC="jav ascript:alert('XSS');">,攻击者可以使用嵌入式回车 inject 恶意脚本。...
除了一些特殊字符需要转义,如双引号(`"`),反斜杠(`\`),正斜杠(`/`),以及一些控制字符(`\b`退格、`\f`换页、`\n`换行、`\r`回车、`\t`制表符),其他Unicode字符都可以直接输出。 2. **数值**:可以是...
在Python 3.4中,控制用户输入与输出是编程的基本操作,对于初学者来说尤其重要。下面将详细讲解这两个方面。 ### 一、输入 #### 1. `input()` 函数 `input()` 函数是获取用户输入的主要方式。它的基本格式如下:...
C#编程经验技巧宝典源代码,目录如下: 第1章 开发环境 1 <br>1.1 Visual Studio开发环境安装与配置 2 <br>0001 安装Visual Studio 2005开发环境须知 2 <br>0002 配置合适的Visual Studio 2005...
当程序逐行读取输入时,如果用户输入1 2 3并分别按下回车,程序会分别读取这些值。计算平均值后,结果为2.0,所以显示B,2.0。 2.4 伪代码 伪代码是一种混合了自然语言和程序代码的描述方式,用于表达算法思路,...
在GridView的列定义中,可以使用`<ItemTemplate>`标签来包含一个控件,如Label,然后在Label的Text属性中使用`<%# Eval("YourField", "{0}\n") %>`,这将根据字段内容添加换行符。 6. **使用JavaScript或jQuery**...
在编程和网页开发中,处理用户输入是至关重要的任务之一,尤其是当涉及到用户与界面的交互时。在本文中,我们将深入探讨一个特定的函数代码,该代码旨在处理用户按下回车键时将焦点转移到下一个输入字段。这个功能在...
与第13点类似,但这里使用的是回车符。 ##### 15. 嵌入式多行注入JavaScript,这是XSS极端的例子 ```html <IMG SRC="javascript:alert('XSS')"); ``` 通过多行注入的方式将恶意脚本插入到页面中,这种方式适用于某些...