javascript - PHP Ajax 调用结束时刷新当前页面

标签 javascript php jquery ajax

我正在进行一个 ajax 调用,如下所示:

$.ajax({
  type: "POST",
  url: "myPHP.php",
  data: 1,
  success: window.location.reload()
});

以及一些与之相关的 php :

<?php

// PDO CONNECTION

session_start();

$mission_id = $_POST['mission'];

$_SESSION['auth']->mission_id = $mission_id;

if($pdo->prepare('UPDATE client SET mission_id = ? WHERE id = 1;')->execute([$mission_id])) {
    // Creates a session to be read by the header at the page load
    $_SESSION['flash']['success'] = 'Good.';
} else {
    $_SESSION['flash']['danger'] = 'Problem.';
}

?>

在我的 header.php(我包含在每个页面中)中,我有一个代码可以读取 session ['flash'],显示关联的消息,然后销毁它。在我的页面中,我有一个 php 条件,它负责处理 session['auth']->mission_id 并根据它显示内容。

我愿意在 PHP 代码完全完成后刷新页面,以便显示 session Flash 并考虑 session Mission_id 发生的条件。

问题是,当我执行 Ajax 代码时,页面会重新加载,但就像 php session (flash 和 Mission_id)尚未准备好一样。我必须手动重新加载才能看到更改。

我尝试使用complete而不是success的解决方案,甚至setTimeout,但它不起作用。

我知道 PHP 可以正常工作,因为我可以看到 PHP 在我的数据库中发生的更改。

我尝试过:

$.ajax({
  type: "POST",
  url: "myPHP.php",
  data: myDatas,
  success: setTimeout(window.location.reload(), 3000)
});

还有其他一些东西。

感谢您的帮助。

最佳答案

在这两个方面...

success: window.location.reload()
success: setTimeout(window.location.reload(), 3000)

...reload后的括号立即调用该方法。提供给 success:setTimeout() 的是方法的返回值,类似于:

var _result = window.location.reload();

$.ajax({
  type: "POST",
  url: "myPHP.php",
  data: 1,
  success: _result
});

要将调用延迟到事件发生时,您必须直接提供一个函数对象。使用 reload() 等方法执行此操作的一种选择是将其调用包装在另一个函数中。

success: function () {
    window.location.reload();
}

或者:

function onSuccess() {
    window.location.reload();
}

// ...
success: onSuccess // no calling parenthesis
<小时/>

在某些情况下,直接提供方法也可能有效。

success: window.location.reload

不过,这样做通常会改变方法的 this 含义,并且可能需要预先绑定(bind)它。

success: window.location.reload.bind(window.location)

关于javascript - PHP Ajax 调用结束时刷新当前页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43710084/

相关文章:

javascript - 如何从 Dropzone JS 中的服务器响应 (JSON) 调用错误?

php - 如何在选项中放入多个值并在mysql中处理它

jquery - 如何使用 jQuery 在页面加载时打开 Accordion 样式的网格?

jquery - 动态创建时 IE7 单选按钮问题

javascript - 如何将javascript数组保存为redis列表

c# - 组合框数据库值

javascript - div 中的图像动态填充

php - 如何使用 PHP 将数据添加到现有的 Excel 文件?

php - 如何在 PHP 和 MySql 中保存和管理 session ID 和用户 ID

javascript - 你如何强制 Ember 重新渲染一个组件?