我有一个看起来像这样的 JTemplate 字符串
<a class="add" href="#" onclick="javascript:myfunction('{$T.Properties.Title}')" >
当我的参数 $T.Properties.Title 是一个包含单引号字符的字符串时,此代码会中断。
我可以在传递参数值时使用双引号字符,但是我的代码会因双引号而中断。
如何转义输入字符串,以便我的代码适用于同时包含单引号和双引号的字符串?
我有一个看起来像这样的 JTemplate 字符串
<a class="add" href="#" onclick="javascript:myfunction('{$T.Properties.Title}')" >
当我的参数 $T.Properties.Title 是一个包含单引号字符的字符串时,此代码会中断。
我可以在传递参数值时使用双引号字符,但是我的代码会因双引号而中断。
如何转义输入字符串,以便我的代码适用于同时包含单引号和双引号的字符串?
创建对象时,您需要使用反斜杠转义引号:
Properties = {Title: 'I\'m lovin\' my quotes'};
编辑 :
根据您的评论:
可悲的是,无法控制来源。:( JSON 来自第三方网站
您可以尝试使用setTemplate(s, [], {filter_params: true});
根据文档,它正在使用 escapeHTML - 但我没有尝试过,我不确定它是如何工作的。
看到这个关于转义 HTML 的问题filter_data
:jtemplates-html-in-variables
或者在收到 JSON 对象后尝试转义引号。我相信您可以使用 PHP json_encode
- 请参见此处:json-parse-error-with-double-quotes
此处描述的其他解决方案:javascript-how-escape-quotes-in-a-var-to-pass-data-through-json
我遇到了同样的问题,最后我所做的是转义了 java 脚本中的引号。
以下是我的代码。
在模板中:
$('#content').setParam('getUrl', getUrl);
在 HTML 中;内模板。
href="{$P.getUrl($T.RESULTS.URL)}"
JS方法:
function(theLink){
return theLink.replace(/\"/g, "%22");
//If you want to escape all the characters use the following
return escape((theLink))
}
干杯..:)