ajax在页面刷新之前不会加载新的sql结果

时间:2015-02-25 19:57:36

标签: javascript php ajax

我正在构建一个论坛,我使用此代码加载所有评论forum_retrieve.php,此时此工作正常。

$(document).ready(function() {
  $('#results_holder').load('forum_retrieve.php<? echo ' ? forum_id = ' . urlencode($forum_id) ?>').show();
});​

但是当用户将表单提交给forum_handle.php(将注释保存到sql)并使用以下方式重定向回来时

if ($connect->query($sql) === TRUE) {
  header('Location: forums.php?id=' . $_POST['forum_id']);
} else {​

Ajax不会加载新的结果,即使我提交了5条评论,它们也不会加载,直到我刷新页面或点击其他页面然后回来。

我甚至尝试将ajax放在30秒的时间延迟上,即使我可以在定时器启动之前在sql中看到它,它仍然不会加载新的结果。

我尝试过使用no caching headers。我也试过$(window).ready

每次加载文档时都不应该进行新的查询吗?我不明白为什么选择不这样做。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

首先要做的事情是:load()不是按照你想象的那样使用,根本不是。它只是在加载$('#results_holder')时激活一个函数。而已。你没有传递任何功能,因此没有结果。

然后,正如Daniel所指出的,只要文档准备就绪,load()函数只会被触发一次。然后脚本停止运行,因此它没有机会按你的意愿工作。

您要做的是不时从forum_retrieve.php中获取内容并将其显示在适当的容器中。

尝试这样的事情:

$(document).ready(function() {

    var forumID = '<?= urlencode($forum_id) ?>';

    setInterval(function() {
        $.get({
            url: 'forum_retrieve.php',
            data: {forum_id: forumID}
        })
        .done(function(data) { $('#results_holder').html(data); });
    }, 10000);
});

每10000ms(= 10秒)触发一次函数,从forum_retrieve.php中检索内容并将其注入$('#results_holder')元素。让我知道它是否有效!