我正在尝试使用flask,SQLAlchemy,AJAX和JSON创建一个聊天室应用程序。我要实现的功能之一是,当一个用户在其他人创建的聊天室中时,如果该聊天室被删除,则会弹出一条消息,并将其重定向回主页。
我的问题是,当我在一个常规的chrome窗口中与一个用户测试此用户,而在一个隐身窗口中与另一个用户进行测试(因此他们不会共享同一个cookie jar)时,除非我拥有chrome,否则不会显示警报DevTools在侧面打开。
这是我的js代码:
function requestResponse() {
if (httpRequest.readyState == XMLHttpRequest.DONE) {
if (httpRequest.status == 200) {
var messages = JSON.parse(httpRequest.responseText);
if (messages == "deleted") {
alert("The owner has deleted the chatroom.");
window.location.href = "/login";
} else if (messages.length != 0) {
var table = document.querySelector(".message-board");
for (var i = 0; i < messages.length; i++) {
var row = document.createElement("tr");
var cell = document.createElement("td");
cell.innerHTML = messages[i].content;
row.appendChild(cell);
table.appendChild(row);
lastUpdate = messages[i].time;
}
updateScroll();
}
}
}
}
这是我的python api路由:
@app.route('/api/chatroom', methods = ['GET', 'POST'])
def handle_room():
if ("chatroom" in session):
if request.method == 'GET':
lastUpdate = request.args.get("last")
chatroom = Room.query.filter_by(name = session["chatroom"]).first()
if chatroom:
newMessages = [message.makeDict() for message in chatroom.messages if message.time > float(lastUpdate)]
return jsonify(newMessages)
else:
return jsonify("deleted")
elif request.method == 'POST':
newMessage = Message(request.form["contents"], time.time())
chatroom = Room.query.filter_by(name = session["chatroom"]).first()
chatroom.messages.append(newMessage)
db.session.commit()
lastUpdate = request.form["last"]
newMessages = [message.makeDict() for message in chatroom.messages if message.time > float(lastUpdate)]
return jsonify(newMessages)
else:
return render_template("blocked.html")
我仍然对AJAX,JSON和js还是陌生的,因此使用js警报与DOM混淆可能是另一个问题。任何帮助将不胜感激!