传递给 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 不起作用