Django将json对象传递给jquery

时间:2012-03-28 19:45:48

标签: jquery django json

在我看来我正在生成一个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的最佳方式是什么?

2 个答案:

答案 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>