【问题标题】:jQuery prepend a auto fetch php file databasejQuery 预先添加一个自动获取 php 文件数据库
【发布时间】:2010-05-29 15:43:10
【问题描述】:

目前我有一个 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);

我的问题是如何阻止它继续重复相同的消息?如果有新数据,我希望它显示。

【问题讨论】:

    标签: php jquery mysql


    【解决方案1】:

    如果我理解正确,你想要:

    1. 如果不被欺骗,添加新消息;
    2. 保留其他唯一消息

    所以你需要循环我这样认为:

    $.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 响应未包含在 &lt;LI&gt; 标记中!

    【讨论】:

      【解决方案2】:

      更新:

      您的反应如何?最简单的方法是更新 refID 并将其设置为最大的 msg_id 在您的回复中。这样,您将始终只获得新数据。

      我会编辑它以这种格式生成 HTML 代码的 PHP 代码:

      <li id="msg-msg_id"><div>user avatar </div><div> user posted msg</div></li> 
      

      如果是消息(例如 200),则将 msg_id 替换为实际 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 检索消息。


      (旧答案没有帮助)

      【讨论】:

      • 嗨,它仍然继续增加相同的消息。谢谢
      • @newinjs:你看到我的改变了吗?我将prepend() 更改为html()
      • html() 的问题在于,它删除了 ol#update 上的旧数据
      • @newinjs:我认为响应包含旧数据?请参阅我的更新答案。如果这没有帮助,请澄清您的问题,因为我不知道您的实际问题是什么。
      • 如果有新数据,消息将得到更新。例如,它可能是,id:200,data:aaaaaaaa,id:201,data:bbbbbbbbb。 (WHERE msg_id>'$refID') 如果我使用 html(),数据 aaaaaaa 就消失了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-12
      • 1970-01-01
      • 2014-10-01
      • 2013-04-11
      • 1970-01-01
      • 2021-11-03
      • 2013-01-20
      相关资源
      最近更新 更多