字典传递给js不起作用

时间:2013-07-30 08:16:33

标签: javascript django django-templates django-views

我是javascript的新手。我正在研究django项目。我需要将字典模板变量传递给javascript,但我还没有。

views.py包括:

def index(request):
   name={'bishal':509,'bishnu':510}
   return render_to_response("test.html",Context({'name':simplejson.dumps(name)}))

test.html包括:

{% load staticfiles %}
{% block include_js %}
<script src="{% static "js/chart.js" %}"></script>
<script src="{% static "js/test.js" %}"> </script>
{% endblock include_js %}

{% block main_content %}

    <script type="text/javascript" src="static/js/test.js"></script>
    <script type="text/javascript">
       var name={{name}};
    </script>
    <button class="btn btn-primary" id="btn1" type="button" onclick="myfunction()">1st visualization</button>
    {% endblock %}

test.js包括:

$(function myfunction() {
 document.getElementById('btn1').onclick=function(){
        name=JSON.parse(name);
        alert(name);
   };
});

但是错误发生了:

[30/Jul/2013 02:50:51] "GET /visualize/static/js/test.js HTTP/1.1" 404 2732

我在html中尝试过类似的事情:

    <html>
<head>

<script type="text/javascript">
function myfunction()
{
    dict=JSON.parse(dict);
    alert(dict);

}
</script>

</head>
<body>

<script type="text/javascript">
var dict='{"bishnu": 509, "bishal": 510}';
</script>

<form>
<input type="button" 
onclick="myfunction()" 
value="Call function">
</form>

<p>By pressing the button, a function will be called. The function will alert a message.</p>

</body>
</html>

完美无缺。请帮忙!

2 个答案:

答案 0 :(得分:2)

忽略所有JavaScript。您问题的关键是:

[30/Jul/2013 02:50:51] "GET /visualize/static/js/test.js HTTP/1.1" 404 2732

404是'找不到文件'的HTTP代码,这意味着您使用了错误的路径来引用您的JavaScript文件。解决这个问题,你可能会发现你的解决方案可行 - 或者,如果没有,至少会有不同的解决方法。

答案 1 :(得分:0)

@Adrian关于错误消息是正确的,但我怀疑你所考虑的问题是由于在test.html中没有引用{{name}}引号。尝试:

<script type="text/javascript">
    var name='{{name}}';
</script>