我正在尝试在我的网页上设置一个cookie。 设置完cookie之后,我想在页面上不执行任何操作时立即重定向他,并等待用户刷新页面以实现cookie。
我正在使用php jQuery 3.4来做到这一点。
我尝试在JQuery中的函数后刷新页面,但似乎没有被触发。
我尝试在cookie设置后使用header('Location: /index.php')
,但它也不起作用。猜测是因为Cookie是在HTTP请求中还是从header(Content-Type :application/json)
这是我的JavaScript函数
//get value from a search bar
var option = $(".search-text").val();
//use ajax to sent it to my php file
jQuery.ajax({
type: "POST",
url: 'script_php/cookie.php',
dataType: 'json',
data:{functionname: 'cookie', arguments: option},
success: function (obj, textstatus){
if( !('error' in obj) ) {
yourVariable = obj.result;
}
else {
console.log(obj.error);
}
}
});
这是PHP触发的
<?php
//get the infos from the js file
header('Content-Type: application/json');
$Result = array();
//stock them inside an array
$Result['succes'] = cookie($_POST['arguments']);
function cookie($name){
setcookie("user", $name, time() + (86400 * 365.25), "/");
header('Location: /index.php');
}
$Result = array();
?>
我希望先设置cookie,然后返回页面index.php
实际输出是正在设置的cookie,但页面保持静止
答案 0 :(得分:0)
我在理解您要尝试执行的操作时遇到了一些麻烦,但是我认为我遇到了多个问题。
在您的PHP代码段中,您正在用一个空数组覆盖$ Result。不确定要这么做。
您定义了一个函数cookie($name)
,但是您没有在任何地方调用该函数,因此它不会执行。.
您的PHP脚本(如果正在运行)不会输出任何数据到客户端,除了http标头。
如上面的注释中所述,如果您希望浏览器转到其他地方,则可以在客户端执行此操作,在这种情况下,我认为您必须这样做。因此,成功后,即在您的回调中:
document.location = "/index.php"
如果尚未使用Firefox控制台之类的调试工具,则应该这样做。然后,您可以查看xhr请求和响应中发生了什么。