簡體   English   中英

Ajax發布到php。 保存cookie並將其發送回javascript

[英]Ajax post to php. Save cookie and send it back to javascript

我通過ajax POST發送數據到php。 我想將其保存在php cookie中,然后能夠通過ajax GET請求在javascript中檢索它。 在PHP中,我的cookie檢查函數返回“未設置cookie ____”。 我做錯了什么,導致我無法存儲Cookie,然后無法檢索它。

AJAX POST

function(config) {
    var config_copy = JSON.parse(JSON.stringify(config));

    //post cookie
    $.ajax({
           url: "php/pivot_cookie.php",
           type: "POST",
           data: config_copy,
           success: function(){ alert("Cookie: success") },
           error: function(data){alert(data);}
     });

}

PHP

$cookie_name = "pivot_config";
$cookie_value = $_POST['config_copy'];
setcookie($cookie_name, $cookie_value, "/");

//cookie check function
if(!isset($_COOKIE[$cookie_name])) {
    echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
    echo "Cookie '" . $cookie_name . "' is set!<br>";
    echo "Value is: " . $_COOKIE[$cookie_name];
}

AJAX GET我不知道我在“數據”字段中輸入了什么來檢索Cookie,因此我可以將其傳遞給其他功能之一

 $(document).ready(function(){
    $.ajax({
          url: "php/pivot_cookie.php",
          type: "GET",
          data: (cookie - I dont know how to get it),
          success: function(){ alert("Cookie Retreival: success") },
          error: function(data){alert("Cookie Retrieval: failure");}
    });
}

您沒有為Cookie設置正確的有效期。 嘗試:

setcookie($cookie_name, $cookie_value, time() + 3600, "/"); // expire in 1 hour

查看setcookie的官方文檔

除了不給PHPs setcookie()提供第3個參數所需的內容外,您還需要為$.ajax().success()方法設置一個參數。

之后,您可以使.success(data)處理所需的data

請注意 ,我要傳遞的JSON數據代替ajax-post.html文件中的data屬性。

data: {"config_copy": config_copy}

根據您要處理的數據,您可以只使用Javascript檢索Cookie數據。

在網絡瀏覽器的控制台中嘗試以下操作? 設置cookie之后(假設您僅設置了一個pivot_config

escape( document.cookie.split('=').pop() ).replace('+', ' ')

還要注意,Cookie可以存儲的數據量有限。

pivot_cookie.php

$cookie_name = "pivot_config";

if ( isset( $_POST['config_copy'])) {
    $cookie_value = $_POST['config_copy'];
    setcookie($cookie_name, $cookie_value, time()+3600, "/");

    //cookie check function
    if(!isset($_COOKIE[$cookie_name])) {
        echo "Cookie named '" . $cookie_name . "' is not set!";
    } else {
        echo "Cookie '" . $cookie_name . "' is set!<br>";
        echo "Value is: " . $_COOKIE[$cookie_name];
    }
}
else {
  if ( isset( $_COOKIE[$cookie_name] ) ) {
    echo $_COOKIE[$cookie_name];
  }
}

Ajax的post.html

<html>
<head>
  <title>getting using ajax</title>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
  <script>
  function x (config) {
    var config_copy = JSON.parse(JSON.stringify(config));

    //post cookie
    $.ajax({
            url: "pivot_cookie.php",
            type: "POST",
            data: {"config_copy": config_copy},
            success: function(data,b,c){
              alert("Cookie Retreival: success");
              $("body").html(data);
            },
            error: function(data){alert(data);}
        });

    }

    window.addEventListener("load", function () {
        x("hi post");
    });
  </script>
</head>
<body>
</body>
</html>

Ajax的get.html

  <html>
  <head>
    <title>getting using ajax</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <script>
    $(document).ready(function(){
      $.ajax({
          url: "pivot_cookie.php",
          type: "GET",
          data: "(cookie - I dont know how to get it)",
          success: function(data,b,c){
            alert("Cookie Retreival: success");
            $("body").html(data);
          },
          error: function(data){alert("Cookie Retrieval: failure");}
      });
    });
    </script>
  </head>
  <body>
  </body>
  </html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM