Javascript 发送消息时,Socket.io不会发出任何消息
预期结果是,在用户按下“回车”键或“发送”按钮后,该消息将显示在聊天框中。但是,这两个事件不会发生任何事件,数据库中也不会保存聊天记录 在chrome控制台中,我收到以下错误:Javascript 发送消息时,Socket.io不会发出任何消息,javascript,python,flask,socket.io,Javascript,Python,Flask,Socket.io,预期结果是,在用户按下“回车”键或“发送”按钮后,该消息将显示在聊天框中。但是,这两个事件不会发生任何事件,数据库中也不会保存聊天记录 在chrome控制台中,我收到以下错误: chat.js:7 Uncaught TypeError: Cannot read property 'addEventListener' of null at n.<anonymous> (chat.js:7) at n.emit (socket.io.slim.js:6) at n
chat.js:7 Uncaught TypeError: Cannot read property 'addEventListener' of null
at n.<anonymous> (chat.js:7)
at n.emit (socket.io.slim.js:6)
at n.emit (socket.io.slim.js:8)
at n.onconnect (socket.io.slim.js:8)
at n.onpacket (socket.io.slim.js:8)
at n.<anonymous> (socket.io.slim.js:8)
at n.emit (socket.io.slim.js:6)
at n.ondecoded (socket.io.slim.js:6)
at a.<anonymous> (socket.io.slim.js:8)
at a.n.emit (socket.io.slim.js:6)
以下是app.py:
@socketio.on("send message")
def send_msg(msg, timestamp):
chat = session.get['friend']
friend_id = db.execute("SELECT id FROM users WHERE username=:username", {"username":chat}).fetchone()[0]
convo_id = db.execute("SELECT chat_id FROM chat_ids WHERE p1_id =: p1_id, p2_id =: p2_id", {"p1_id":session["user_id"], "p2_id":friend_id})
db.execute("INSERT INTO messages (conversation_id, sender, reciever, time, message) VALUES (:id, :sender, :reciever, :time, :message)",
{"coversation_id": convo_id, "sender":session["user_id"], "reciever": friend_id, "time":timestamp, "message":msg})
emit('announce message', {
'timestamp': timestamp,
'msg': msg,
'user_id':session["user_id"],
'friend_id': friend_id},
chat = chat)
下面是相关的html文件
<body>
<div class="messaging">
<div class="inbox_msg">
<div class="mesgs">
<div class="msg_history">
{% for message in messages %}
{% if message["sender"] == session.user_id %}
<div class="outgoing_msg">
<div class="sent_msg">
<p id="newmsg">{{message[3]}}</p>
<span class="time_date" id="newdate">{{message[2]}}</span>
</div>
{% else %}
<div class="incoming_msg">
<div class="incoming_msg_img"><img src="https://ptetutorials.com/images/user-profile.png" alt="">
<div class="received_withd_msg">
<p id="newmsg">{{message[3]}}</p>
<span class="time_date" id="newdate">{{message[2]}}</span>
</div>
</div>
</div>
</div>
{% endif %}
{% endfor %}
</div>
<div class="type_msg">
<div class="input_msg_write">
<input id="msg" type="text" class="write_msg" placeholder="Type a message" />
<button id="button-send" class="msg_send_btn" type="button"><i class="fa fa-paper-plane-o" aria-hidden="true"></i></button>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
{消息%中的消息为%s}
{%if消息[“发件人”]==session.user\u id%}
{{message[3]}
{{消息[2]}
{%else%}
{{message[3]}
{{消息[2]}
{%endif%}
{%endfor%}
错误
chat.js:7未捕获的TypeError:无法读取null的属性'addEventListener'
正如它所说;事件正在附加到类型为null的对象。它发生在下面的一行
document.querySelector('#text').addEventListener("keydown", event => {
确保<代码> ID>代码>称为“代码>文本< /代码>是有效的,还应该考虑使<代码> ID 名称位更具唯一性。此外,如果您的
Js
文件位于HTML
文件的head
部分,并且您使用#text
所做的引用在body
部分中定义,也会发生这种情况。有关更好的解释,请参阅。错误
chat.js:7未捕获的TypeError:无法读取null的属性'addEventListener'
正如它所说;事件正在附加到类型为null的对象。它发生在下面的一行
document.querySelector('#text').addEventListener("keydown", event => {
确保<代码> ID>代码>称为“代码>文本< /代码>是有效的,还应该考虑使<代码> ID 名称位更具唯一性。此外,如果您的
Js
文件位于HTML
文件的head
部分,并且您使用#text
所做的引用在body
部分中定义,也会发生这种情况。有关更好的解释,请参阅。未捕获类型错误:无法读取null的属性“addEventListener”
表示您试图将事件侦听器附加到一个对象变量,而该对象变量中没有任何内容。因此,您的一个查询选择器可能失败。检查以确保每个查询选择器都实际返回您在查询字符串中指定的对象。Uncaught TypeError:Cannot read属性'addEventListener'为null
表示您试图将事件侦听器附加到一个对象变量,而该对象变量中没有任何内容。因此,您的一个查询选择器可能失败。检查以确保每个查询选择器实际返回您在查询字符串中指定的对象。