2010-11-29 46 views
1

JSONデータをサーバー側のHTML隠しフィールドに保存します。次に、クライアント側でJavascriptとJQueryを使用してそのデータを取得したいと思います。問題は、JSONオブジェクトではなくJSON文字列を取得することです。隠し入力からJSONデータを取得する

これは、サーバー側での私のコードです:

<form id="data" style="display: none;"> 
    <input id="channels" type="hidden" tal:attributes="value python: view.context['ChannelManager'].toJSON(view.channels.values())" /> 
    <input id="mediaGroups" type="hidden" tal:attributes="value python: view.context['MediaGroupManager'].toJSON(view.mediaGroups.values())" /> 
</form> 

これは、クライアント側での私のコードです:

copy.channelList = new ChannelTest(); 
copy.channelList.fromJSONObjectAll($("#data input[id=channels]").val()) 

だから私はこのことからJSON文字列の代わりに、JSONオブジェクトを取得し、$( "#data input [id = channels]")。val()。

JSONオブジェクトのJSON文字列を変換せずにJSONオブジェクトを取得するにはどうすればよいですか?

ありがとうございます!ネイティブJSONをサポートしていない古いブラウザの場合

+1

「文字列を変換せずにJSONオブジェクトを取得する」とはどういう意味ですか? – casablanca

+0

私はあなたが欲しいと思うものを投稿しましたが、その部分は混乱しています。 json文字列をオブジェクトに変換せずに、json文字列をオブジェクトに変換する方法を尋ねています。 –

+0

HTML入力を塗りつぶすと、データはJSONオブジェクトであり、JSON文字列ではありません。しかし、クライアント側でそのデータを取得すると、JSON ObjectではなくJSON文字列になります。 JSONオブジェクトのJSON文字列を変換しないようにしたいと思います。 – bribon

答えて

6
JSON.parse(jsonString); 

、あなたは単にjson2.jsを含むことができ、これは、使用可能な機能となります。


また、サーバー側のスクリプトを使用してこの手順を省略することもできます。 JSONをスクリプトタグに書き込むだけで済みます。これは、生のjavascriptの代わりにscriptタグによって暗黙的に解析されます。

<script type="text/javascript"> 
    var myObj = <%= myJsonString %>; 
    console.log('we got this value: '+ myObj.myValue); 
</script> 
+0

JSON.parse(jsonString)を避けたいのですが、クライアント側に保存するとデータはJSONオブジェクトなので、どうしたの? JSONオブジェクトをHTML入力に格納することはできますか?私は – bribon

+0

の ''タグを使用しているフレームワークでは、この種のスクリプトを_only_文字列値を持つことはできません。したがって、データを文字列として保存する場合は、文字列からJavaScriptオブジェクトに変換する必要があります。あるいは、HTML要素を一切置かずに、上で概説したようにスクリプトタグに直接書くこともできます。しかし、オブジェクトを直接格納するための ' 'は決して得られません。文字列のみ。フォーム要素はフォーム提出のためにエンコードされることに注意してください。したがって、 ''は '?foo = bar'のようにエンコードします。それがJavascriptオブジェクトだった場合、それはどのようにして複雑なオブジェクトとしてエンコードされますか? –

+0

@bribon:サーバー上のデータはjson文字列です。クライアントにJavaScriptオブジェクトとして直接転送する方法はありません。 Squeegyの提案に従うと(データをjs変数として埋め込むと、ページが最初に読み込まれたときにブラウザが解析を行います) –

関連する問題