JQuery AJAX обновить, не могу заставить его работать - PullRequest
3 голосов
/ 24 января 2012

Хорошо, если коротко, я использую этот сценарий в мобильной среде jquery.Я использую AJAX для получения результатов из базы данных.У меня в данный момент работает, но не обновляется автоматически.Я прочитал множество онлайн-сообщений о том, как использовать функцию установки интервала, и я попробовал это.Однако, когда я пытаюсь это сделать, он работает, но продолжает добавлять дублирующийся контент (одна и та же запись базы данных снова и снова).Я просто не могу заставить это работать.Любая помощь будет высоко ценится, спасибо заранее!

Вот мой код (* я не удалил функцию setinterval):

 <script type="text/javascript">
$( document ).delegate("#member_home", "pagecreate", function() 
{ 
var member= new Array();
$.ajaxSetup({cache: false})
$.ajax({
url: '/scripts/alert_display.php',
data: "",
isajax: 1,
dataType: 'json',
success: function(data)
  {
    $.each(data, function(key, val) {

var friend = val['friend'];

$('#member_alerts').append(friend+"&nbsp;Wants to be your friend<input type='hidden' value='"+friend+"' id='hidden4' /><button type='submit' id='add'>Accept</button><br />");
                                                         });
                                                  }
                                           });

                                 })
                    </script>

Большое спасибо за помощь, так что для ясности мой код теперь должен выглядеть следующим образом?:

<script type="text/javascript">
$( document ).delegate("#member_home", "pagecreate", function() 
{ 
var refreshId = setInterval(function()
{
var member= new Array();
$.ajaxSetup({cache: false})
$.ajax({
url: '/scripts/friend_request_display.php',
data: "",
isajax: 1,
dataType: 'json',
success: function(data)
  {
    $.each(data, function(key, val) {

var friend = val['friend'];

$('#member_alerts').html(friend+"&nbsp;Wants to be your friend<input type='hidden' value='"+friend+"' id='hidden4' /><button type='submit' id='add'>Accept</button><br />");
                                                         });
                                                  }
                                           });
               }, 1000);
                                 })
                    </script>

Ответы [ 3 ]

2 голосов
/ 24 января 2012

Он продолжает добавлять дублированный контент, потому что вы используете функцию append, которая добавляет текущий DOM в элемент. Вместо этого используйте html (вам также может понадобиться создать теги div). См. этот ТАК вопрос для получения дополнительной информации.

1 голос
/ 24 января 2012

Если вы пытаетесь выполнить обновление с интервалом, вы должны поместить setTimeout в обратный вызов вашего jquery ajax. Это позволит функции ждать, пока запрос не будет завершен, для повторного вызова функции.

Я бы записал вызов в отдельную функцию, а затем вызывал бы ее один раз при загрузке страницы, и рекурсивно с setTimeout (myFunction, 1000) каждый раз, когда завершается запрос ajax. Это предотвратит одновременное выполнение нескольких запросов к серверу, что может вызвать проблемы, как это было бы с setInterval.

1 голос
/ 24 января 2012

если вы используете

$('#member_alerts').html(yourcontenthere);

Тогда это должно решить вашу проблему с дублированным контентом.

...