【问题标题】:Escaping strings in JTemplate在 JTemplate 中转义字符串
【发布时间】:2012-07-11 10:21:35
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: javascript jquery jtemplates


    【解决方案1】:

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

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

    编辑:

    根据您的评论:

    遗憾的是,无法控制源。 :( JSON 来自第三个 派对现场

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

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

    请参阅有关使用 filter_data 转义 HTML 的问题: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

    【讨论】:

    • 遗憾的是,无法控制源。 :( JSON 来自第三方网站。
    【解决方案2】:

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

    干杯..:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-24
      • 1970-01-01
      • 1970-01-01
      • 2017-12-06
      相关资源
      最近更新 更多