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

标签 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 中看到它。

我尝试过使用无缓存 header 。我也尝试过 $(window).ready

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

最佳答案

首先要做的事情: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);
});

每 10000 毫秒(= 10 秒)就会触发一个函数,从 forum_retrieve.php 检索内容并将其注入(inject)到 $('#results_holder') 元素中。如果有效请告诉我!

关于javascript - ajax 在页面刷新之前不会加载新的 sql 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28728436/

相关文章:

javascript - 如何使 cors 代理服务器使用 http 基本身份验证处理 https 请求?

php - 使用 FPDF 通过 PHP 发送电子邮件 PDF 附件

javascript - 通过AJAX(ASP.NET MVC)将json结果附加到div

javascript - 仅当元素存在时才使用 Jquery 函数(Ajax 调用)

javascript - Node/Express 中的 Ajax 删除请求和响应 - 在调用方法后如何使用 GET 方法重定向?

javascript - 如何使用jquery在子菜单下动态添加子菜单?

javascript - 如何使用 JEST 对 React App 中的功能进行单元测试

javascript - 如何在 D3.js 中操作特定的 SVG 路径

php - 如何将 Guzzle Mock Handler 传递给 PHP 类以测试具有 json 响应的 API 调用

php - shuffle() 不能按预期使用关联数组