Javascript 具有'&书信电报;br/>';抛出未终止的字符串文本js错误

Javascript 具有'&书信电报;br/>';抛出未终止的字符串文本js错误,javascript,asp.net,xhtml,Javascript,Asp.net,Xhtml,我正在从数据库中获取一些数据,并使用jquery以以下方式将其显示在文本区域中。 $(“#textraeatest”).val(“”)。字符串“teststring”可能包含XHTML换行符()。每当字符串包含时,我就会收到'unterminated string literal'错误。我看到许多帖子将“\n”视为换行符,并建议将其转义。我尝试以类似方式转义,但没有成功 有人能帮我吗 更新::我已经转义了单引号。 下面是一个示例字符串测试字符串 谢谢。您应该对html字符串进行编码,因此变成:

我正在从数据库中获取一些数据,并使用jquery以以下方式将其显示在文本区域中。
$(“#textraeatest”).val(“”)
。字符串“teststring”可能包含XHTML换行符(

)。每当字符串包含

时,我就会收到
'unterminated string literal'
错误。我看到许多帖子将“\n”视为换行符,并建议将其转义。我尝试以类似方式转义

,但没有成功

有人能帮我吗

更新::我已经转义了单引号。 下面是一个示例字符串测试字符串


谢谢。

您应该对html字符串进行编码,因此

变成:

<br/>

看到一个实际的例子会有很大帮助,但这会是一件愚蠢而烦人的事情。我的猜测是,您在代码中混合了单引号和双引号,从而在构造字符串时得到了一个不匹配的外部集

更新

好吧,如果这就是您要发送的字符串,那么就没有问题了——字符串文本没有什么问题,所以您一定弄错了——没有错误

假设在我告诉您之后代码仍然无法工作,那么您可能需要更深入地研究

看,错误信息是非常清楚的——有些东西在语法上以字符串文字开头,但解释器找不到结尾。字符串文本实际上只有一种语法:

字符串文字为零或更多 用双引号(“)或 单(')引号。字符串 必须用引号分隔 属于同一类型的;即两者都有 单引号还是双引号 引号。以下是 字符串文字的示例:

“等等”“等等”“1234”“一行\n 另一行“除普通 字符,您还可以包括 字符串中的特殊字符,如 显示在中的最后一个元素中 上表。下表 列出您需要的特殊字符 可以在JavaScript字符串中使用。 字符含义\b退格\f格式 馈送\n新行\r回车 \t制表符\反斜杠字符

4.5.转义字符

对于未在列表中列出的字符 前面的表格,前面的反斜杠 被忽略,但 引号和反斜杠 角色本身

您可以在其中插入引号 通过在字符串前面加上 反斜杠。这称为转义 引号。例如

var quote=“他读过”火葬 由R.W.服务部出版的《山姆·麦基》 文件。编写(引用)

这样做的结果将是

他读了《山姆·麦基的火葬》 通过R.W.服务。包括文字 字符串中的反斜杠,必须 转义反斜杠字符。对于 例如,指定文件路径的步骤 c:\temp要转换为字符串,请使用 以下:

var home=“c:\temp”

此时,您至少需要做两件事中的一件:

  • 仔细阅读代码,或者最好与其他人一起浏览代码,寻找错误的单引号或双引号

  • 在代码中输入
    console.log
    语句,以缩小错误发生的范围


要记住的最重要的一点是解析器总是正确的——即使您认为它是错误的,它仍然是正确的,因为您无法与解析器协商。

如果
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');

这可能有点过头了,但只是为了测试:是吗

$('#textareatest').val(decodeURI('<% =System.Uri.EscapeUriString(teststring) %>'))
$('#textraeatest').val(decodeURI('')
工作


这将对URL中使用的整个字符串进行编码,并让javascript对其进行解码。虽然效率不高,但相当安全(因为URI中允许的字符集非常小).

如果teststring包含一个单引号怎么办?请检查我原始问题中的更新以查看示例字符串。因为这不会导致未终止的字符串文字错误。注意,我不是其中之一……同意,但单引号已经被转义,并且基于提供的测试字符串,应该以任何方式执行。…虽然从数据库中获取的数据中没有'\n',但当我尝试在firebug中调试js时,我看到'\n'被添加到了
。因此,我逃过了它,并解决了问题。感谢您的帮助。谢谢您,您度过了我的一天!我有一个PHP函数,它在Javascript块中包含的字符串中输出了一个\n,这就是我为什么要继续获取“unterminated string literal”!
System.Uri.EscapeUriString
似乎不编码单引号(