ColdFusion/Javascript 转义单引号

Posted

技术标签:

【中文标题】ColdFusion/Javascript 转义单引号【英文标题】:ColdFusion/Javascript Escape Single Quote 【发布时间】:2012-04-06 02:07:43 【问题描述】:

我知道这将是一些我只是想念的简单的东西,但它就是这样:

我有一个 ColdFusion 应用程序,用户可以在其中在多个屏幕上输入文本。我有一个 javascript 函数,可以根据数据库中存储的内容检查输入的文本,并弹出一个确认窗口,询问他们是否要保存/放弃更改。

如果用户输入的文本包含引号(单引号或双引号),则 javascript 将完全失效。我需要转义引号,同时保持检查内容是否匹配的能力。

我已经尝试了 escape() 和 replace() 函数(单独和一起),但没有任何效果。

示例 javascript:

function change_question()
    var feedback = document.getElementById('feedback').value; //this is what the user has entered on the page
    var stored_feedback = "#trim(StoredFeedback)#"; //this is what is stored in the database; retrieved via ColdFusion

    if (feedback != stored_feedback) 
        if (confirm('You have unsaved data on the page. Do you wish to discard your changes?')) 
            //go to next page
        
    
    else 
            //go to next page
    

谢谢。

【问题讨论】:

如果有 JSON 编码实用程序,请使用它。 【参考方案1】:

内置的 jsStringFormat 将为 JavaScript 转义

var stored_feedback = "#jsStringFormat(StoredFeedback)#";

【讨论】:

这太完美了,谢谢 Sam!一个问题 - 我如何在反馈变量上使用它(即用户输入的内容?) 编辑:没关系,我想通了:var feedback_string = document.getElementById('feedback').value; var feedback = #jsStringFormat('feedback_string')#;【参考方案2】:

我不知道 ColdFusion,但根据文档:

var stored_feedback = #SerializeJSON( trim(StoredFeedback) )#; 

认为您不需要显式添加引号,因为序列化为 JSON 时的字符串无论如何都应该以双引号结尾。再说一次,我自己无法测试。

【讨论】:

上面的哈希字符是不必要的。 @DavidFaber 真的吗? ColdFusion 怎么知道这应该被解释为它的代码而不是 JavaScript? 需要哈希字符。我相信 David 认为预期的行是在 CF 上下文中,但它是在打算在 cfoutput 中使用的 JavaScript 上下文中 谢谢尖头。我会在以后的项目中记住这一点,但是 jsScriptFormat 正是我这次所需要的。 @Pointy,我很抱歉。我假设您是在 <cfscript> 的函数内部执行此操作的(更有理由不使用 <cfscript> 恕我直言;-))。【参考方案3】:

如果您正在寻找 ColdFusion 解决方案,您可能想要使用这个:

htmlEditFormat(string)

HTML 转义字符串字符串。返回字符被删除;换行字符被保留。 HTML 中具有特殊含义的字符被转换为 HTML 字符实体,例如 >.

【讨论】:

谢谢。进出数据库的所有内容都使用 HTMLEditFormat,但用户输入(未保存)的数据确实是个问题。 HTML 转义在将值输出到 JavaScript 代码时没有用。

以上是关于ColdFusion/Javascript 转义单引号的主要内容,如果未能解决你的问题,请参考以下文章

Oracle中的单引号怎么转义

oracle怎样转义单引号

oracle怎样转义单引号

oracle怎样转义单引号

oracle怎么将字符串中的转义符

为啥SQL支持两个单引号以及反斜杠转义