【发布时间】:2015-04-28 00:03:51
【问题描述】:
我正在建立一个论坛,并使用此代码加载所有 cmets 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 个 cmets,它们也不会加载,直到我刷新页面或单击另一个页面并返回。
我什至尝试将 ajax 延迟 30 秒,但它仍然不会加载新结果,即使我可以在 sql 中看到它在计时器结束之前。
我尝试过使用no caching headers。我也试过$(window).ready。
不应该在每次加载文档时都进行新查询吗?我不明白为什么它选择不这样做。任何建议将不胜感激。
【问题讨论】:
-
您如何知道 Javascript 正在触发?你有没有设置一些断点?你添加了一些日志吗?您是否看到网络请求在 PHP 端触发和接收?
-
您何时注入 ajax 结果? document.ready 只触发一次。
-
当我在它上面设置时间延迟时,它只会在时间到后才会显示旧结果。它会加载所有的 cmets 就可以了,它唯一没有加载的新 cmets。
-
所以即使在多次离开页面并被重定向回页面后,document.ready 也只会触发一次?
-
我使用 post 方法发布表单,然后将标题重定向回论坛页面。
标签: javascript php ajax