【发布时间】:2011-10-24 21:53:44
【问题描述】:
我正在制作一个消息传递系统,我目前正在使用 jQuery 的 .load() 每 10 秒重新加载一次保存消息的 div 的内容,但我有一个问题:当尝试制作“全选”按钮时,“删除选定的“按钮等。当 10 秒到来时,它会重新加载按钮并重新加载消息,因此由于重新加载,消息会被取消选择。
我想知道的是如何让它真正加载到新消息中,而不是真正重新加载整个 div。我知道 Gmail 不会重新加载整个 div,因为它可以正常工作。
这是我的 JavaScript 函数,它重新加载 div 并更改页面标题(具有收件箱计数)以使其保持更新:
function title() {
setTimeout("document.title = $('#heading').text();", 500);
}
function ajaxStuff() {
setTimeout("$('#heading').load('/employee/message/inbox.php #h1_head'); $('#messages').load('/employee/message/inbox.php #messages_inner');title();ajaxStuff();", 10000);
}
ajaxStuff();
这是我设置收件箱的方式:
基本上我想做的是使用 AJAX 加载新消息,但不知何故不刷新 div。我尝试查看 Gmail 的源代码,但要查看的内容太多,而且它们会与一堆随机的类和 ID 混淆。
注意:我已经在 Google 上搜索了一段时间,但没有找到任何东西。
【问题讨论】:
-
而不是重新加载整个 div,只需将新消息附加或添加(取决于您希望它在顶部还是底部)仅到 div。这将需要使用 $.ajax 而不是 $().load
-
@KevinB 好主意,但是怎么做呢?有没有例子或教程?谢谢。
-
当
checking用于新消息时,在您的请求中发送最新消息的 ID。然后,您的 php 将仅返回您添加到现有数据中的所有新内容。 -
@Radek 是的,这是个好主意。所以当我通过 ajax 请求发送它时,我想知道我会怎么做。还要记住,它是一个供所有用户使用的表(然后是数据库中的
from_user和to_user列),然后我在 MySQL 查询中使用WHERE关键字来仅显示该用户的消息。那么这样还能正常工作吗? -
让我们在我的回答下进行讨论。我希望它对你有用。
标签: javascript jquery ajax