`

项目小经验: eval与回车符

阅读更多

      今天遇到一个让我一开始无从下手的问题, 页面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文件.

2
0
分享到:
评论
3 楼 lg068 2014-07-17  
data = data.replace("\n","<br/>");
2 楼 rmn190 2009-03-26  
是不是JSON的一个什么parser可以啊? 当时因为活比较急,也没有做针对性的实验.

过了后,也没再想.

仁兄有什么好的想法?
1 楼 wangyangqq2008 2009-03-26  
变通方法可以解决,
仁兄有没有再研究过怎么能在eval里处理回车符号

相关推荐

    javascript执行eval函数时利用正则表达式去掉回车符换行符和注释

    1. **回车符与换行符**:在JavaScript中,回车符(`\r`)和换行符(`\n`)通常用来表示新行。如果在`eval()`的字符串参数中存在这些字符,它们会被解释为代码的分隔符,可能导致代码执行错误或不按预期运行。因此,...

    2021-2022计算机二级等级考试试题及答案No.14456.docx

    12. SQL BETWEEN操作符:BETWEEN用于选取介于两个值之间的数据,与之等价的表达式是`工资&gt;=1200 AND 工资,所以A选项正确。 13. Excel删除操作:在Excel中,按Del键仅删除单元格中的数据,保留单元格本身,因此C...

    JavaScript实现一个简易的计算器实例代码

    #### 一、项目背景与目标 本项目旨在通过JavaScript技术实现一个简易的计算器功能,使用户能够进行基础的数学运算(加、减、乘、除)。该项目不仅锻炼了开发者对于HTML、CSS及JavaScript基础知识的应用能力,还涉及...

    亮剑.NET深入体验与实战精要3

    此次将长期的思考、感悟,多年的系统开发、设计和团队管理经验,以及深入分析众多项目实战的宝贵成果和盘托出,力求将编程思想与具体实践融为一体,提炼出适合于广大读者快速理解和彻底掌握.NET软件开发的最佳学习...

    亮剑.NET深入体验与实战精要2

    此次将长期的思考、感悟,多年的系统开发、设计和团队管理经验,以及深入分析众多项目实战的宝贵成果和盘托出,力求将编程思想与具体实践融为一体,提炼出适合于广大读者快速理解和彻底掌握.NET软件开发的最佳学习...

    2021-2022计算机二级等级考试试题及答案No.18111.docx

    1. 退出Visual FoxPro的操作方法:退出应用程序可以通过多种方式实现,包括从文件菜单中选择退出选项,点击窗口关闭按钮,或者在命令窗口中输入QUIT命令并回车。所有这些方法都是正确的。 2. BufferedWriter的...

    2021-2022计算机二级等级考试试题及答案No.12342.docx

    - 空格和回车是最常用的分隔符。 **正确答案**:D. 空格或回车 #### 题目16:软件需求规格说明书作用 - **知识点**:软件需求规格说明书的作用。 - 用于明确软件的功能需求和技术需求。 - 是软件开发过程中重要...

    AAUTO快手编程帮助文档.pdf

    - **内存DLL**:与动态链接库交互。 - **重载API函数**:允许同一个函数名对应不同的实现。 - **API回调函数**:定义回调函数以响应特定事件。 - **模式匹配函数**:支持正则表达式匹配。 - **模式表达式语法**:...

    2021-2022计算机二级等级考试试题及答案No.14726.docx

    `getchar()`函数用于从标准输入读取一个字符,但只读取一个,所以输入'a'后,`c1`被赋值为'a',而`c2`会读取到上一个字符,即回车符。因此,A选项是正确的。 2. 第二道题目涉及Word2003的文本格式化。要将文档中...

    jquery捕捉回车键及获取checkbox值与异步请求的方法

    // 最后,去除最后一个不必要的分隔符 types = types.slice(0, -1); // 如果你希望以逗号分隔,可以使用types.replace(/\|$/, ','); ``` 最后,我们将介绍jQuery的异步请求(Ajax)方法,这使得我们可以向服务器...

    WebGoat讲解

    - **DOM Injection**:与 DOM 相关的注入攻击涉及对文档对象模型的恶意修改,例如通过修改表单元素的状态来执行未授权的操作。 - **XML Injection**:XML 注入攻击是指攻击者利用 XML 文档中的漏洞来注入恶意数据...

    2021-2022计算机二级等级考试试题及答案No.4555.docx

    4. **输入数据分隔符**:在程序中,通常使用空格或回车作为键盘输入多个数据之间的分隔符。 5. **字符串比较**:在VBScript中,`X$Y`表示字符串X是否包含在字符串Y中,如果Y的开头是X,则返回`.T.`(True)。 6. *...

    xss跨站脚本攻击汇总

    13. 嵌入式换行符:&lt;IMG SRC="jav ascript:alert('XSS');"&gt;,攻击者可以使用嵌入式换行符 inject 恶意脚本。 14. 嵌入式回车:&lt;IMG SRC="jav ascript:alert('XSS');"&gt;,攻击者可以使用嵌入式回车 inject 恶意脚本。...

    Json数据格式的使用方法入门教程.pdf

    除了一些特殊字符需要转义,如双引号(`"`),反斜杠(`\`),正斜杠(`/`),以及一些控制字符(`\b`退格、`\f`换页、`\n`换行、`\r`回车、`\t`制表符),其他Unicode字符都可以直接输出。 2. **数值**:可以是...

    python3.4控制用户输入与输出的方法

    在Python 3.4中,控制用户输入与输出是编程的基本操作,对于初学者来说尤其重要。下面将详细讲解这两个方面。 ### 一、输入 #### 1. `input()` 函数 `input()` 函数是获取用户输入的主要方式。它的基本格式如下:...

    C#编程经验技巧宝典

    C#编程经验技巧宝典源代码,目录如下: 第1章 开发环境 1 &lt;br&gt;1.1 Visual Studio开发环境安装与配置 2 &lt;br&gt;0001 安装Visual Studio 2005开发环境须知 2 &lt;br&gt;0002 配置合适的Visual Studio 2005...

    第2章基本编程习题及答案--英文版

    当程序逐行读取输入时,如果用户输入1 2 3并分别按下回车,程序会分别读取这些值。计算平均值后,结果为2.0,所以显示B,2.0。 2.4 伪代码 伪代码是一种混合了自然语言和程序代码的描述方式,用于表达算法思路,...

    GridView控件中内容的换行

    在GridView的列定义中,可以使用`&lt;ItemTemplate&gt;`标签来包含一个控件,如Label,然后在Label的Text属性中使用`&lt;%# Eval("YourField", "{0}\n") %&gt;`,这将根据字段内容添加换行符。 6. **使用JavaScript或jQuery**...

    按下回车键指向下一个位置的一个函数代码

    在编程和网页开发中,处理用户输入是至关重要的任务之一,尤其是当涉及到用户与界面的交互时。在本文中,我们将深入探讨一个特定的函数代码,该代码旨在处理用户按下回车键时将焦点转移到下一个输入字段。这个功能在...

    js脚本攻击大全

    与第13点类似,但这里使用的是回车符。 ##### 15. 嵌入式多行注入JavaScript,这是XSS极端的例子 ```html &lt;IMG SRC="javascript:alert('XSS')"); ``` 通过多行注入的方式将恶意脚本插入到页面中,这种方式适用于某些...

Global site tag (gtag.js) - Google Analytics