Jquery ajax刷新,无法让它工作

时间:2012-01-24 17:39:38

标签: jquery ajax jquery-mobile refresh

好的,总而言之,我在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 个答案:

答案 0 :(得分:2)

它不断添加重复内容,因为您正在使用append函数,该函数会添加到元素中的当前DOM。请改用html(您可能还需要创建div标签)。有关详细信息,请参阅this SO question

答案 1 :(得分:1)

如果您使用

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

然后,这应该可以解决重复内容的问题。

答案 2 :(得分:1)

如果您尝试按间隔刷新,则应将setTimeout放入jquery ajax的回调中。这将允许函数等到请求完成后再次调用该函数。

我会将调用写入一个单独的函数,然后在页面加载时调用它一次,并在每次ajax请求完成时以setTimeout(myFunction,1000)递归调用。这将阻止您同时向服务器发出多个可能导致问题的请求,就像使用setInterval一样。