今天遇到一个让我一开始无从下手的问题, 页面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文件.
分享到:
相关推荐
在利eval函数执行一段代码时,必须要去掉里面的换行符和回车符,但如果不去掉注释,会出现问题,就是注释后面的所有内容不执行,被当作是注释的内容,所以还要去掉各种注释,这里的解决方案可以把所有注释都去掉
前端项目-expr-eval,Mathematical expression evaluator
赠送jar包:rank-eval-client-6.2.3.jar; 赠送原API文档:rank-eval-client-6.2.3-javadoc.jar; 赠送源代码:rank-eval-client-6.2.3-sources.jar; 赠送Maven依赖信息文件:rank-eval-client-6.2.3.pom; 包含...
{评估}依赖经理 :laptop_computer:关于Eval是用以下语言编写的轻量级解释器框架: 斯威夫特 :mobile_phone: iOS, :desktop_computer: macOS,以及 :penguin: Linux平台。 它在运行时使用您定义的运算符和数据类型对...
赠送jar包:rank-eval-client-6.8.3.jar; 赠送原API文档:rank-eval-client-6.8.3-javadoc.jar; 赠送源代码:rank-eval-client-6.8.3-sources.jar; 赠送Maven依赖信息文件:rank-eval-client-6.8.3.pom; 包含...
我们知道,在很多脚本语言中都有eval函数,它可以把字符串转换为表达式并执行.如在javaScript中: var str = aid.value + ".style.top = 10;" 把一个id为"aid"的控制的值取出来加合并成一个字符串,如果aid的值是...
ide-eval-resetter-2.3.5-c80a1d.zipide-eval-resetter-2.3.5-c80a1d.zipide-eval-resetter-2.3.5-c80a1d.zipide-eval-resetter-2.3.5-c80a1d.zipide-eval-resetter-2.3.5-c80a1d.zipide-eval-resetter-2.3.5-c80a1d...
情况1:eval里没有function,直接执行: eval(“alert(‘ss’);”);//所有浏览器正确均输出 情况2:eval里有function,function立即执行: eval(“(function(){alert(‘ss’);})();”);//...
赠送jar包:rank-eval-client-6.2.3.jar 赠送原API文档:rank-eval-client-6.2.3-javadoc.jar 赠送源代码:rank-eval-client-6.2.3-sources.jar 包含翻译后的API文档:rank-eval-client-6.2.3-javadoc-API文档-...
eval解密脚本FLASH eval解密脚本 eval解密脚本
eval前言 In [1]: eval(2+3) Out[1]: 5 In [2]: eval('[x for x in range(9)]') Out[2]: [0, 1, 2, 3, 4, 5, 6, 7, 8] 当内存中的内置模块含有os的话,eval同样可以做到命令执行: In [3]: ...
资源分类:Python库 所属语言:Python 资源全名:eval_hj3415-0.0.8-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
IDE软件试用30天:ide-eval-resetter-2.2.4.jar
DataBinder.Eval的基本格式 在绑定数据时经常会用到这个句程序:<%# DataBinder.Eval(Container.DataItem,"xxxx")%>或者<%# DataBinder.Eval(Container,"DataItem.xxxx")%> 今天又学到一种,而且微软也说这种方法...
Console.WriteLine("TestStatic0: {0}", eval.EvaluateInt("GetNumber")); Console.WriteLine("TestStatic1: {0}", eval.EvaluateString("GetString")); Console.WriteLine("TestStatic2: {0}", eval.EvaluateBool(...
赠送jar包:rank-eval-client-6.3.0.jar; 赠送原API文档:rank-eval-client-6.3.0-javadoc.jar; 赠送源代码:rank-eval-client-6.3.0-sources.jar; 赠送Maven依赖信息文件:rank-eval-client-6.3.0.pom; 包含...
使用NLG_Eval需要依赖的数据包
ide-eval-resetter
赠送jar包:rank-eval-client-6.8.3.jar; 赠送原API文档:rank-eval-client-6.8.3-javadoc.jar; 赠送源代码:rank-eval-client-6.8.3-sources.jar; 赠送Maven依赖信息文件:rank-eval-client-6.8.3.pom; 包含...
功能说明:告知shell取出eval的参数,重新运算求出参数的内容。 语 法:eval [参数] 补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行。 参 数:参数不限数目,彼此之间用分号分开。 1.执行命令行...