在我看来我正在生成一个json转储:
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
传递给$(document).ready(function()
,将json_dump
数据传入js的最佳方式是什么?
答案 0 :(得分:4)
如果我了解您要执行的操作,您希望将JSON blob传递到模板中,以便从HTML中引用的JS文件可以访问它吗?
在这种情况下,只需设置一个变量即可在模板中接收值:
<script type="text/javascript">
var json_dump = "{{ json_dump }}"
</script>
现在在JS中的任何地方使用json_dump。
答案 1 :(得分:3)
上面的答案是正确的,除了你的JSON转储周围有引号可能不是你想要的。为了使用它,你必须使用eval(json_dump),而不是仅仅把它称为对象...我可能会把它搞得像这样:
<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>