解決しました。サーバー側が {} を食べました。
HTML に次のコードがあります。
onclick="changes = {'a': 'b'};"
これは次のように変換されます
onclick="changes = ;"
ページを読み込んだとき。したがって、中括弧とその間のすべてが消えます。これを修正する方法はありますか?最終的に、匿名オブジェクトを関数への入力として渡したいと思います。
onclick="dothis({'a': 'b', '1': '2'});"
解決しました。サーバー側が {} を食べました。
HTML に次のコードがあります。
onclick="changes = {'a': 'b'};"
これは次のように変換されます
onclick="changes = ;"
ページを読み込んだとき。したがって、中括弧とその間のすべてが消えます。これを修正する方法はありますか?最終的に、匿名オブジェクトを関数への入力として渡したいと思います。
onclick="dothis({'a': 'b', '1': '2'});"
私がお勧めするのは、入力でデータを追跡することでコードをよりセマンティックにすることですが、実際のバインディングと実行は別々になります。
<div id="myDiv" data-changes="{'a':'b', '1':'2'}"></div>
document.getElementById('myDiv').onclick = function() {
var data = JSON.parse(this.getAttribute('data-changes'));
// here you should be able to say data.a, data.1, etc.
};
最新のブラウザのほとんどは、ネイティブJSONメソッドをサポートしています。
ブラウザネイティブのJSONサポート(window.JSON)
ただし、そうでない場合は、JSONライブラリでサポートを追加できます。
インラインJavaScriptを使用しないことを検討しましたか/使用できませんか?次のようなものがロードされる外部JavaScriptファイルを用意するだけです(たとえば、実際のコードではありません)。
getElementById("myButton").click( function(){
dothis({'a':'b','1':'2'})
})
そのようなもの(特にライブラリと組み合わせた場合)は、その関数を実行しようとしているすべてのアイテムでコードを複製する必要をなくすことができます。