[英]Refresh current page at the end of PHP Ajax call
我正在一个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代码完全完成后刷新页面,以便显示会话刷新,并考虑到会话task_id发生的情况。
问题是,当我执行我的Ajax代码时,页面会重新加载,但是就像php会话(flash和mission_id)尚未准备好一样。 我必须手动重新加载才能看到更改。
我尝试使用完全解决方案而不是成功解决方案,甚至尝试使用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:
提供的是success:
或setTimeout()
是方法的return
值,类似于:
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
方法的含义,并可能需要事先绑定它。
success: window.location.reload.bind(window.location)
$.ajax({
type: "POST",
url: "myPHP.php",
data: myDatas,
success: function () {
setTimeout(window.location.reload(), 3000)
}
});
要么
$.ajax({
type: "POST",
url: "myPHP.php",
data: myDatas,
success: function () {
window.location.reload()
}
});
data:mydatas! mydatas是您将发送到PHP脚本的数据。 因此您可以像这样指定变量名称和数据:
var name=document.getElementById('name').value;
data:"name="+name+"age="+age
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.