我正在对我的网站进行一些检查,以确保网络浏览器可以运行它。如果浏览器通过要求,我想重新加载网页并使用jQuery发送一个post参数,像这样。
我已经在jQuery上尝试过$.post
函数,
$.post("index.php", {
correcto_obligatorio: true
});
window.location.reload("index.php")
但是,当浏览器重新加载Web时,correcto_obligatorio
上没有$_POST
参数。我使用var_dump
php函数进行打印,我得到的只是NULL
答案 0 :(得分:2)
$。post是一个单独的异步请求。 window.location.reload只是重新加载页面,但不考虑所有异步请求。
如果不使用var_dump
打印$ _POST ['correcto_obligatorio'],但是登录到文件,您将在此看到值。
有两种解决方案适合您。
1)等待ajax结果并对其做出响应。
$.post( "index.php", {
correcto_obligatorio: true
}, function (data) {
if (data.passed_validation) {
window.location.reload("index.php")
}
});
2)其次是发布表格
<form action="/index.php" method="POST" id="my_form">
<input type="hidden" name="correcto_obligatorio" value="1"/>
</form>
<script>
function myFunc() {
$("#my_form").submit()
}
</script>
最常见,最合理的解决方案是第一个解决方案。
答案 1 :(得分:0)
您的代码不等待帖子完成。基本上,您发送请求并将浏览器重定向到index.php,而无需等待服务器回答您。考虑使用回调函数:
$.post( "index.php", {
correcto_obligatorio: true
}, function( result) {
if (result.passed) {
window.location.reload("index.php")
}
});
假设服务器以包含传递的参数的有效json对象作为响应(内容类型应设置为application / json)