我从Db获取一些数据并使用jquery以下列方式在textarea中显示它。
$('#textareatest').val('<% =teststring %>')
。字符串'teststring'可能包含XHTML换行符(<br/>
)。每当字符串包含<br/>
时,我收到'unterminated string literal'
错误。我看到了一些帖子将'\ n'视为换行并建议逃避它。我试图逃避<br/>
,但它没有用。
有人可以帮帮我吗?
更新::我已经转发了单引号。
这是一个示例字符串 测试字符串<br />
感谢。
答案 0 :(得分:2)
如果teststring
包含换行符("\n"
),它很可能会抛出这种错误,因为JavaScript引擎会将其视为
$("#textareatest").val('Some random text
then an unexpected linebreak');
我建议确保teststring
不包含换行符或转义换行符。
如果teststring
包含任何单引号,它也可能会终止字符串:
$("#textareatest").val('Some random test's but that single quote kills the string');
答案 1 :(得分:0)
看到一个真实的例子会有很多帮助,但它会变得愚蠢和令人讨厌。我的猜测是你在代码中混合使用单引号和双引号,结果是在构造字符串时以不匹配的外部集合结束。
<强>更新强>
好吧,如果那是你发送的确切字符串,那就没问题了 - 字符串文字没什么问题,所以你一定是弄错了 - 没有错误。
假设代码在我告诉你之后仍然无法工作,那么你可能需要更深入地了解。
看,错误信息非常清楚 - 你有一些从语法上开始作为字符串文字,但解释器无法找到结束的东西。对于字符串文字,实际上只有一种语法,引用:
字符串文字为零或更多 用double(“)或。括起来的字符 单引号(')。一个字符串 必须用引号分隔 相同类型;也就是说,两者都是 单引号或双引号 引号。以下是 字符串文字的例子:
“blah”'blah'“1234”“一行\ n 另一行“除了普通 字符,你也可以包括 字符串中的特殊字符,如 显示在最后一个元素中 前面的清单。下表 列出你的特殊字符 可以在JavaScript字符串中使用。 字符含义\ b退格\ f形式 feed \ n新行\ r \ n回车 \ t制表符\反斜杠字符
4.5。转义字符
对于未在中列出的字符 在前表中,前面的反斜杠 被忽略,但a除外 引号和反斜杠 角色本身。
您可以在里面插入引号 字符串前面带有一个 反斜杠。这被称为逃避 引号。例如,
var quote =“他读了”火葬 Sam McGee的作品“由R.W. Service提供。” 文件撰写(报价)
结果将是
他读到“Sam McGee的火葬” 由R.W.服务。包括文字 你必须在字符串中反斜杠 逃避反斜杠的角色。对于 例如,分配文件路径 c:\ temp到一个字符串,使用 以下内容:
var home =“c:\ temp”
此时你需要做两件事中的至少一件:
仔细阅读代码,或者更好地与其他人一起浏览代码,寻找错误的单引号或双引号
在您的代码中添加console.log
语句,以缩小发生错误的位置。
要记住的最重要的事情是解析器总是正确的 - 即使你认为它是错误的,它仍然是正确的,因为你无法与解析器协商。
答案 2 :(得分:0)
这可能有点矫枉过正,但只是为了测试:
$('#textareatest').val(decodeURI('<% =System.Uri.EscapeUriString(teststring) %>'))
工作?
这将对整个字符串进行编码以便在URL中使用,并让javascript对其进行解码。它效率不高,但相当安全(因为URI中允许的字符集非常小)。
答案 3 :(得分:-1)
您应该对html字符串进行编码,因此<br/>
变为:
<br/>