【问题标题】:auto refresh ajax div running on php page自动刷新在php页面上运行的ajax div
【发布时间】:2013-07-21 05:12:45
【问题描述】:

请在下面查看我的代码。我想在 php 页面上自动刷新 div。我试图通过 javascript 和 html 标头刷新,但它正在慢慢降低我的计算机速度。

page2.php

<?php

if($_GET['type']!='ajax'){
    include 'header.php';
    echo "<div id='main-content'>";
}
?>
Itm 1</br>
Itm 2

<img class="ajax-loader" src="ajax-loader.gif" alt="loading..." />

<?php
if($_GET['type']!='ajax'){
    echo "</div>";
    include 'footer.php';
}?>

app.js

$.cergis = $.cergis || {};
$.cergis.loadContent = function () {
    $('.ajax-loader').show();
     $.ajax({
         url: pageUrl + '?type=ajax',
        success: function (data) {
            $('#main-content').html(data);
            // hide ajax loader
            $('.ajax-loader').hide();

  }
    });
    if (pageUrl != window.location) {
        window.history.pushState({ path: pageUrl }, '', pageUrl);
    }
}
$.cergis.backForwardButtons = function () {
    $(window).on('popstate', function () {
        $.ajax({
            url: location.pathname + '?type=ajax',
            success: function (data) {
                $('#main-content').html(data);
            }
        });
    });
}
$("a").on('click', function (e) {
    pageUrl = $(this).attr('href');
    $.cergis.loadContent();
    e.preventDefault();
});
$.cergis.backForwardButtons();

我尝试了不同的变化,但没有运气。请帮帮我。

谢谢。

app.js 改变了...

function myTimer() {
  $('.ajax-loader').show();
  $.ajax({
      url: pageUrl + '?type=ajax',
      success: function (data) {
          $('#main-content').html(data);
          // hide ajax loader
          $('.ajax-loader').hide();
        }
  });

}

setInterval(function(){myTimer()}, 1000);

【问题讨论】:

  • '显示出来'?你确定?
  • 对不起,速度变慢了......

标签: php javascript ajax html refresh


【解决方案1】:

您可以使用setTimeout($.cergis.loadContent, 1000); 刷新一次或使用setInterval($.cergis.loadContent, 1000); 每秒刷新一次(1000 毫秒 = 1 秒)。

http://www.w3schools.com/js/js_timing.asp

【讨论】:

  • 我都试过了....实际上这一次它开始但没有结束动作...卡在中间...
  • 这些函数会启动你在参数中给出的函数。所以如果它没有结束,那是因为你给出的函数没有做你所谓的“结束动作”。
  • 我在原始帖子的末尾更改了 app.js...基本上这个 ajax 更改了点击时的 div....我想要它应该更改自动...
  • $(function(){ setInterval(myTimer, 1000);} 将在 DOM 准备好时开始间隔
【解决方案2】:

试试 setTimeout:

function myTimer() {
  $('.ajax-loader').show();
  $.ajax({
      url: pageUrl + '?type=ajax',
      success: function (data) {
          $('#main-content').html(data);
          // hide ajax loader
          $('.ajax-loader').hide();
          setTimeout(myTimer,1000);//so that the request ends setTimeout calls a new request.
      },
      error: function () {
          setTimeout(myTimer,1000);//If there is an error in the request the "autoupdate" can continue.
      }
  });
}
myTimer();//fire

这样setTimeout() 等待完成请求以调用新请求。

setInterval()不等待,导致simuntaneos产生多个事件,导致运行缓慢。

【讨论】:

    猜你喜欢
    • 2020-12-22
    • 1970-01-01
    • 2012-12-08
    • 2015-06-08
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多