【发布时间】:2018-04-11 03:37:52
【问题描述】:
所以,我一直在做一个 django 项目(使用 djagno 1.11),我看到有人用他们的 git repo here 模拟了一个非常酷的聊天功能(使用 django 2.0)here。我可以按照指南在它自己的应用程序中重新创建整个项目,但是当我将它添加到我自己的应用程序时,我遇到了麻烦。我当前的应用程序使用引导程序并具有 javascript 将项目添加到购物车和其他类似的东西,我想知道这是否妨碍了我。其他的 javascript 仍然有效,新的 javascript 没有。我得到了你的基本错误:
未捕获的引用错误:$ 未定义
当我用谷歌搜索它时,我发现这意味着在定义之前正在使用某些东西。我在 python 方面很不错,但在 javascript 方面是一个极端新手,所以我不确定发生了什么。深入研究错误,我看到以下内容:
<script src="https://project.s3.amazonaws.com/static/js/chat.js"></script>
<script>
// For receiving
sender_id = "";
receiver_id = "1";
//For sending
$(function () { <<-- This is where the error is pointing to.
scrolltoend();
$('#chat-box').on('submit', function (event) {
event.preventDefault();
var message = $('#id_message');
send('', '', message.val());
message.val('');
})
})
</script>
</div>
上面的代码位于 project/chat/templates/chat/chat.html 中的 html 文件的底部,它通过 {% static 'js/chat.js' %} 引用了 chat.js,上面是 aws 代码行cloudhere:project/static_my_proj/js/chat.js。我正在集成的这段代码有“materialize.js”和“materialize.min.js”之类的东西,我试图了解它们的作用。
我想知道我是否正在尝试结合两种类型的 javascript。我完全迷路了。有没有人有任何指示?有什么我可以提供的代码可以提供帮助吗?
谢谢
【问题讨论】:
-
你必须定义jquery,或者如果你定义了,那是你的js块顺序。浏览器渲染的顺序取决于 html 标记的顺序。
-
我认为你是对的。我按照艾哈迈德(Ahmet)在下面所说的做了,从技术上讲,错误消失了,但现在我在每个 html 页面上调用 jquery,我可能应该将它放在一个地方。我需要查看 js 块顺序。我认为 js 块排在最后,因为这个 js 在一个 html 代码块中,所以它是乱序的。
-
我认为您可以执行以下操作:在您的 base.html(母版页)上放置您的 jquery,然后在它的脚本标记后放置 {% block scripts %}{% endblock scripts %} 和孩子页面将 js 函数放入 {% block scripts %} {% endblock scripts %}。 PS://只是简单的解释//
标签: javascript django materialize