我正在研究Symfony2项目,我想调用一个JavaScript函数,并从Twig传递一个JSON对象数组(我从控制器中获取)。
但是第一个非常简单的测试已经失败,例如:
main.js:
function helloWorld(name) {
console.log("hello " + name);
}
链接到 twig 中的main.js并调用函数:
<body>
<script>helloWorld("world!")</script>
{% block javascripts %}
<script src="{{ asset('js/main.js') }}"></script>
{% endblock %}
</body>
导致ReferenceError:
&#34;未捕获的ReferenceError:未定义helloWorld&#34;
我需要采取哪些不同的方法才能使其发挥作用?
编辑:感谢两位花时间回答的人。所描述的枝条实际上由一堆嵌套的树枝组成,javascript包含的位置基于Symfony documentation,猜测这是为什么我没有看到明显的。虽然在表达问题时应该自己检测到问题....
答案 0 :(得分:7)
反转功能的顺序:
<body>
{% block javascripts %}
<script src="{{ asset('js/main.js') }}"></script>
{% endblock %}
<script>helloWorld("world!")</script>
</body>
答案 1 :(得分:3)
在执行函数之后,将带有helloWorld
定义定义的脚本放在中。这意味着JavaScript还不知道该函数并触发此错误。
解决方案:将您的javascript置于导入之下(例如,在</body>
之前,在javascripts块中)或将导入放在页面javascript之前(例如在头部)。