如何从php函数重定向到由ajax触发的set,cookie?

时间:2019-05-31 20:06:32

标签: php jquery ajax cookies

我正在尝试在我的网页上设置一个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,但页面保持静止

1 个答案:

答案 0 :(得分:0)

我在理解您要尝试执行的操作时遇到了一些麻烦,但是我认为我遇到了多个问题。

在您的PHP代码段中,您正在用一个空数组覆盖$ Result。不确定要这么做。

您定义了一个函数cookie($name),但是您没有在任何地方调用该函数,因此它不会执行。.

您的PHP脚本(如果正在运行)不会输出任何数据到客户端,除了http标头。

如上面的注释中所述,如果您希望浏览器转到其他地方,则可以在客户端执行此操作,在这种情况下,我认为您必须这样做。因此,成功后,即在您的回调中:

document.location = "/index.php"

如果尚未使用Firefox控制台之类的调试工具,则应该这样做。然后,您可以查看xhr请求和响应中发生了什么。