【问题标题】:Jquery ajax refresh, can't get it to workJquery ajax刷新,无法正常工作
【发布时间】:2012-01-24 17:39:38
【问题描述】:

好吧,长话短说,我在 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>

【问题讨论】:

  • 在每个函数之前的成功函数中包含 data=eval(data)
  • 对不起,你能不能给我举个例子,不是要痛苦

标签: jquery ajax jquery-mobile refresh


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果你使用

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

    那么这应该可以解决您重复内容的问题。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2017-01-21
        • 1970-01-01
        • 1970-01-01
        • 2017-10-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多