传递给 js 的字典不起作用

Posted

技术标签:

【中文标题】传递给 js 的字典不起作用【英文标题】:Dictionary passed to js not working 【发布时间】:2013-07-30 06:51:43 【问题描述】:

我是 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>

效果很好。请帮忙!

【问题讨论】:

【参考方案1】:

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

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

404 是“找不到文件”的 HTTP 代码,这意味着您使用了不正确的路径来引用您的 JavaScript 文件。解决这个问题,您可能会发现您的解决方案可以正常工作 - 或者,如果不能,至少会以不同的方式中断。

【讨论】:

我想向 OP 补充一点,您正在做的事情被认为是非常糟糕的做法,应该尽可能避免! @limelights 如果您想将其作为单独的答案添加并提出改进建议,我很乐意投票以使最初的提问者至少看到它。我怀疑他正在维护别人的代码,并且可能无法自己更改。 路径是正确的,因为它适用于类似传递的字符串 让我们假设它比看起来更复杂,并且 chart.js 和 test.js 都在同一个文件夹中。你能证明加载的 chart.js 绝对是那个位置的那个(例如,在它的顶部放一个 alert())?另外,您是否有可能在某个地方输入了错误的文件名,或者文件名中有一个您错过的空格? @limelights 您能否详细说明这里的不良做法是什么?【参考方案2】:

@Adrian 对错误消息的看法是正确的,但我怀疑您正在考虑的问题是由于在 test.html 中没有在 name 周围加上引号引起的。试试:

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

【讨论】:

以上是关于传递给 js 的字典不起作用的主要内容,如果未能解决你的问题,请参考以下文章

将 LayoutParams 传递给 ViewGroup 不起作用

将 Json 数组传递给 UIPickerView 不起作用

为啥我的代码在传递给 .exe 时不起作用?

为啥将字符串传递给接受 LPSTR 的函数不起作用?

将 python 列表传递给烧瓶视图不起作用

将 JSON 传递给 PHP 不起作用