2012-03-28 6 views
0

にJSONオブジェクトを渡す:Djangoは、私はJSON形式のダンプを生成しています私の見解ではjqueryの

def myview: 
    ... 
    data = list(queryset) # a query set of values 
    json_dump = simplejson.dumps(data) 
    ... 
    return render_to_response(request, 'results.html', { 'json_dump' : json_dump}) 

私のテンプレートのJavaScriptファイルを参照しています

$(document).ready(function() { 
     // some stuff involving the json_dump var 
     ... 
    }; 

を私の質問は、私はjson_dumpを渡すことはできませんと見て、あります直接のデータをjsに入れるにはどうすればよいですか?

答えて

4

私はあなたが何をしようとして理解していれば、あなたはテンプレートにJSONブロブを渡したい、それがHTMLから参照されますJSファイルにアクセス可能だということな?

、ちょうどあなたのテンプレートに値を受け取る変数を設定した場合:

<script type="text/javascript"> 
    var json_dump = "{{ json_dump }}" 
</script> 

そして今、あなたのJSに好きな場所json_dump使用しています。

+0

を展開するには、単に出力jsonブロブをテンプレート内のスクリプトタグ内の変数に置き換えます。 –

+1

javascriptでテンプレート言語を二重引用符で囲む必要はありませんか?これはvar json_dump = "{{json_dump}}"です。 – Sid

+0

@sid - ありがとう、更新された –

3

あなたはおそらくあなたが望むものではありません、あなたのJSONダンプの前後に引用符を持っています除き上記の答えは、右です。それを使用するためには、あなただけのオブジェクトとしてそれを呼び出すのではなく、(json_dump)evalに必要があるだろう...私はおそらく少しこのようにそれをSPIFFたい:

<script> 
    var window.json_dump = {{ json_dump|safe }}; 
</script> 

<script> 
    // Then later in your other javscript which comes AFTER the above script tags... 
    $(document).ready(function() { 
    alert(window.json_dump.foo); 
    }); 
</script> 
+1

'| safe'修飾子がなければ、' json_dump'は使用できません。 – IAbstract