1

このようなJTemplate文字列があります

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

このコードは、パラメーター$T.Properties.Titleが一重引用符を含む文字列である場合に壊れます。

パラメータ値を渡すときに二重引用符を使用することもできますが、コードは二重引用符で区切られます。

一重引用符と二重引用符の両方を含む文字列に対してコードが機能するように、入力文字列をエスケープするにはどうすればよいですか?

4

2 に答える 2

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 に答える
0

オブジェクトを作成するときは、引用符をバックスラッシュでエスケープする必要があります。

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

編集 :

あなたのコメントによると:

悲しいことに、ソースを制御することはできません。:( JSONはサードパーティのサイトからのものです

使用してみることができますsetTemplate(s, [], {filter_params: true});

ドキュメントによると、エスケープHTMLを使用していますが、試したことはなく、どのように機能するかわかりません。

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

于 2012-07-11T10:39:47.423 に答える