4

json_encodeを使用してphpでエンコードされている配列があります

 $params = array(1=>'something','2'=>'two');

json encodeを使用してエンコードすると、それ自体は問題ない二重引用符でエンコードされますが、これをアンカータグに埋め込もうとしており、二重引用符が属性を台無しにしています。 <a class="btn ajax" data-method="test" data-params="{"one":"something","2":"two"}" href="#">test ajax link</a>

明らかに、data-params属性の2番目の二重引用符はリンクを切断しています。

したがって、私が行ったことは、文字列を一重引用符に変換することでしたが、JavaScriptで解析できるようにするには、文字列を二重引用符に再変換する必要があります。

 var string = {'one':'something','2':'two'} ;

JSON.parseはその文字列で失敗します、私は試しました

 var jsonString = dataParams.replace('\'', '"');

しかし、それは最初の一重引用符を変換するだけのようで、その後停止します。何か案は?

4

2 に答える 2

3

より良いアプローチは、htmlentities()関数"を使用してasをエンコードすることです。&quot;つまり、として挿入できますdata-*。JavaScriptを使用して取得すると、として表示されます。"つまり、JSON.parseすぐに取得できます。

<a data-foo="<?php echo htmlentities(json_encode(array('demo' => 'test'))); ?>">Hey</a>
<script>alert(JSON.parse(document.getElementsByTagName("a")[0].dataset.foo).demo);</script>
于 2012-07-20T12:59:26.010 に答える
0

代わりにこれを使用してください:

var jsonString = dataParams.replace(/'/g, '"');
于 2012-07-20T12:57:51.903 に答える