目前我有一个php文件,它从mysql中获取数据以显示在网站中。
我正在使用输入值作为$ _GET参数发送到php文件以确定要显示的数据。
mysql_query("SELECT * FROM messages WHERE msg_id>'$refID' ORDER BY msg_id DESC");
//$refID is input value
一旦加载,
我正在使用此jquery代码在网站上显示
setInterval(
function ()
{
$.get('load.php?id='+refID, function(html) {
$("ol#update").prepend(html);
$("ol#update li:first").slideDown("slow");
});
}, 10000);
我的问题是如何阻止它继续重复相同的消息?如果有新数据,我希望它显示。
答案 0 :(得分:1)
<强>更新强>
您的回复如何?最简单的方法是更新refID
并在响应中将其设置为最大msg_id
。这样,您将始终只获取新数据。
我会编辑以这种格式生成HTML代码的PHP代码:
<li id="msg-msg_id"><div>user avatar </div><div> user posted msg</div></li>
如果邮件(例如200),例如
,则用实际ID替换msg_id
<li id="msg-200"><div>avatar</div><div>my message</div></li>
然后你可以使用jQuery执行以下操作:
$.get('load.php?id='+refID, function(html) {
if(html) { // html will be empty (I guess?) if there are no new messages
refID = $('<div>' + html + '</div>').find('li:first').attr('id').split('-',2)[1];
$("ol#update").prepend(html);
$("ol#update li:first").slideDown("slow");
}
});
这会将refID
更新为当前检索到的消息的ID,下次执行这些功能时,它将从此ID中检索消息。
(旧答案没有帮助)
答案 1 :(得分:1)
如果我理解正确,你想要:
所以你需要循环我想这样:
$.get('load.php?id=' + refID, function(html) {
var check = false;
$("ol#update li").each(function() {
if (this.id == refID) check = true;
});
if (check == false)
$("ol#update").prepend('<li id="' + refID + '">' + html + '</li>');
$("#" + refID).slideDown("slow");
});
假设你有
<ol id="update">
<li id="200">The Brown Fox Jump Over the Lazy Dog</li>
....
</ol>
并假设您的 HTML 响应未包含在<LI>
代码中!