jQuery предваряет базу данных php-файла для автоматической загрузки

0

В настоящее время у меня есть 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);

Мой вопрос: как я могу остановить его, повторяя одно и то же сообщение? Я хочу, чтобы он отображался, если появились новые данные.

Теги:

2 ответа

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>!

1

Update:

Как выглядит ваш ответ? Самый простой способ - обновить refID и установить его в наибольшем msg_id в вашем ответе. Таким образом, вы всегда будете получать только новые данные.

Я бы отредактировал PHP-код, который создает HTML-код в этом формате:

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

где вы заменяете msg_id фактическим идентификатором, если сообщение (например, 200), например

<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 до идентификатора полученного в данный момент сообщения, а в следующий раз, когда функции будут выполнены, он будет получать сообщения от этого идентификатора.


(Старый ответ не помог)

  • 0
    привет, это все еще продолжает умножать то же самое сообщение. благодарю вас
  • 0
    @newinjs: Вы видели мои изменения? Я изменил prepend() на html()
Показать ещё 14 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню