好的,这是一个问题, 我有一个html模板,看起来像这样:
<script>
$(function() {
var vCountries = {{ visitedCountriesList }};
});
</script>
<..>
{{ visitedCountriesList }}
从服务器我将一个列表传递给这个项目,但在渲染后它看起来像这样:
<script>
$(function() {
var vCountries = ;
});
</script>
<..>
[u'Afghanistan', u'Japan', u'United Arab Emirates']
所以我的问题是 - 为什么?以及如何将其传递给javascript ...?
答案 0 :(得分:8)
问题是数组的字符串表示形式不是有效的JavaScript。一开始的u'
并不好。这样:
[u'Afghanistan', u'Japan', u'United Arab Emirates']
应该是这样的:
['Afghanistan', 'Japan', 'United Arab Emirates']
您有两种选择。在view函数中,将其编码为JSON:
render_to_response('my_view.html', {
'visitedCountriesList' : json.dumps(visitedCountriesList)
})
或创建可以使用的过滤器。有关示例,请参阅this一个。然后使用只是:
<script>
$(function() {
var vCountries = {{ visitedCountriesList|jsonify }};
});
</script>
答案 1 :(得分:1)
你应该在你的html中有一个带有变量渲染的id并在那里查看,让我们做一个例子:
<...>
<loldiv id="myvar" data="{{info}}"/>
<...>
并在您的javascript中:
<script>
$(function() {
var vCountries = $("#myvar").attr("data");
});
</script>
假设您正在使用jQuery。
我真的不知道为什么该模板会分配变量,但你不应该渲染任何关于javascript代码的信息,因为有一段时间你要把它拿到js并把它放在压缩文件上,或者移动它,或者重用如果以这种方式渲染变量值,那将很难做到。
希望这有帮助!