使用jQuery自动刷新内容(使用模板引擎)

时间:2012-02-07 23:40:58

标签: php javascript jquery

我正在寻找一种方法来使用jQuery和脚本index.php,它是使用模板引擎逐位构建的,如下所示:

<?php

global $template;

page_header(); // Calls and displays header.html
$template->load('body', 'index.html'); // Loads index.html and calls it 'body'
   *Code that assigns values to variables in index.html*
$template->display('body'); // Displays index.html
page_footer(); // Calls and displays footer.html
?>

其中每一行都是注释的。

我想使用jQuery构建一个自动恢复index.php的函数,但只有'body'部分。我找不到任何关于这样做的文档,但我查看了以下代码:

function update() {
  $("#notice_div").html('Loading..'); 
  $.ajax({
    type: 'GET',
    url: 'index.php',
    timeout: 2000,
    success: function(data) {
      $("#current_game").html(data);
      $("#notice_div").html(''); 
      window.setTimeout(update, 10000);
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
      $("#notice_div").html('Timeout contacting server..');
      window.setTimeout(update, 60000);
    }
});
};

但是当它在标题中时它变得非常混乱,因为它调用整个index.php页面嵌套标题,所以我们在标题中有一个标题。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

最简单的解决方案是发送一个get变量;

function update() {
    $("#notice_div").html('Loading..'); 
    $.ajax({
        type: 'GET',
        url: 'index.php',
        data: 'ajax=true',
     ...
}

并在您的php文件中执行以下操作:

if($_GET['ajax'] == 'true') {
    // don't print header, but other stuff
} else {
    // print header
}

如果您使用的是框架,它可能会有一些智能功能来自动确定它是xhttp请求还是普通请求。通常通过扩展标题来完成