1

我有一个看起来像这样的 JTemplate 字符串

<a class="add"  href="#" onclick="javascript:myfunction('{$T.Properties.Title}')" >

当我的参数 $T.Properties.Title 是一个包含单引号字符的字符串时,此代码会中断。

我可以在传递参数值时使用双引号字符,但是我的代码会因双引号而中断。

如何转义输入字符串,以便我的代码适用于同时包含单引号和双引号的字符串?

4

2 回答 2

0

创建对象时,您需要使用反斜杠转义引号:

Properties = {Title: 'I\'m lovin\' my quotes'};

编辑 :

根据您的评论:

可悲的是,无法控制来源。:( JSON 来自第三方网站

您可以尝试使用setTemplate(s, [], {filter_params: true});

根据文档,它正在使用 escapeHTML - 但我没有尝试过,我不确定它是如何工作的。

看到这个关于转义 HTML 的问题filter_datajtemplates-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

于 2012-07-11T10:39:47.423 回答
0

我遇到了同样的问题,最后我所做的是转义了 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))
}

干杯..:)

于 2013-02-22T19:51:49.627 回答