阿贾克斯后到PHP。保存cookie,并寄回给JavaScript [英] Ajax post to php. Save cookie and send it back to javascript

查看:126
本文介绍了阿贾克斯后到PHP。保存cookie,并寄回给JavaScript的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我发送的数据通过AJAX POST到PHP。我想将它保存在一个PHP的cookie,然后就能通过AJAX的GET请求来检索它的JavaScript。在PHP中,我的cookie检查函数返回的cookie ____未设置。我在做什么错,是造成我不能够存储我的cookie,然后检索它。

AJAX POST

 函数(配置){
    VAR config_copy = JSON.parse(JSON.stringify(配置));

    //后的cookie
    $阿贾克斯({
           网址:PHP / pivot_cookie.php
           键入:POST,
           数据:config_copy,
           成功:函数(){警报(曲奇:成功)},
           错误:功能(数据){警报(数据);}
     });

}
 

PHP

  $ cookie_name =pivot_config;
$ cookie_value = $ _ POST ['config_copy'];
的setcookie($ cookie_name,$ cookie_value,/);

// cookie检查功能
如果(!使用isset($ _ COOKIE [$ cookie_name])){
    回声曲奇命名为。 $ cookie_name。 '没有设置!;
} 其他 {
    回声曲奇'。 $ cookie_name。 '设置< BR!>中;
    回声的价值是:。 $ _COOKIE [$ cookie_name]
}
 

AJAX GET 我不知道我把在数据字段检索该cookie,所以我可以将它传递到我的其他功能之一

  $(文件)。就绪(函数(){
    $阿贾克斯({
          网址:PHP / pivot_cookie.php
          键入:GET,
          数据:(饼干 - 我不知道如何得到它)
          成功:函数(){警报(曲奇Retreival:成功)},
          错误:功能(数据){警报(曲奇检索:失败);}
    });
}
 

解决方案

除了不给PHP的的setcookie()它想了第3个参数是什么 你还需要设置 $一个参数。阿贾克斯() .success()方法。

之后,你可以让 .success(数据)办理数据不过你想要的。

注意 JSON数据我传递代替数据 AJAX-post.html <物业/ code>文件。

 数据:{config_copy:config_copy}
 

根据数据,你正在处理,你可以只使用JavaScript 检索cookie数据。

试试下面的Web浏览器的控制台里面?当你设置cookie (假设你只设置一个cookie的 pivot_config

 逃生(document.cookie.split('=')。pop()方法).replace('+','')
 

另外需要注意的饼干中的数据就可以存储量的限制。

pivot_cookie.php

  $ cookie_name =pivot_config;

如果(使用isset($ _ POST ['config_copy'])){
    $ cookie_value = $ _ POST ['config_copy'];
    的setcookie($ cookie_name,$ cookie_value,时间()+ 3600,/);

    // cookie检查功能
    如果(!使用isset($ _ COOKIE [$ cookie_name])){
        回声曲奇命名为。 $ cookie_name。 '没有设置!;
    } 其他 {
        回声曲奇'。 $ cookie_name。 '设置&LT; BR!&gt;中;
        回声的价值是:。 $ _COOKIE [$ cookie_name]
    }
}
其他 {
  如果(使用isset($ _ COOKIE [$ cookie_name])){
    回声$ _COOKIE [$ cookie_name]
  }
}
 

AJAX-post.html

 &LT; HTML&GT;
&LT; HEAD&GT;
  &LT;冠军&GT; /标题&gt;使用AJAX和LT得到;
  &所述;脚本的src =htt​​p://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js&GT;&所述; /脚本&GT;
  &LT;脚本&GT;
  函数x(配置){
    VAR config_copy = JSON.parse(JSON.stringify(配置));

    //后的cookie
    $阿贾克斯({
            网址:pivot_cookie.php
            键入:POST,
            数据:{config_copy:config_copy},
            成功:功能(数据,B,C){
              警报(曲奇Retreival:成功);
              $(机构)HTML(数据);
            },
            错误:功能(数据){警报(数据);}
        });

    }

    window.addEventListener(负荷,函数(){
        X(喜交);
    });
  &LT; / SCRIPT&GT;
&LT; /头&GT;
&LT;身体GT;
&LT; /身体GT;
&LT; / HTML&GT;
 

AJAX-get.html

 &LT; HTML&GT;
  &LT; HEAD&GT;
    &LT;冠军&GT; /标题&gt;使用AJAX和LT得到;
    &所述;脚本的src =htt​​p://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js&GT;&所述; /脚本&GT;
    &LT;脚本&GT;
    $(文件)。就绪(函数(){
      $阿贾克斯({
          网址:pivot_cookie.php
          键入:GET,
          数据:(饼干 - 我不知道如何得到它),
          成功:功能(数据,B,C){
            警报(曲奇Retreival:成功);
            $(机构)HTML(数据);
          },
          错误:功能(数据){警报(曲奇检索:失败);}
      });
    });
    &LT; / SCRIPT&GT;
  &LT; /头&GT;
  &LT;身体GT;
  &LT; /身体GT;
  &LT; / HTML&GT;
 

I am sending data to php via ajax POST. I want to save it in a php cookie, and then be able to retrieve it in javascript via a ajax GET request. In PHP, my cookie check function is returning "cookie ____ is not set". What am I doing wrong that is causing me not being able to store my cookie, and then retrieve it.

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 I dont know what I put in the "data" field to retrieve the cookie so I can pass it into one of my other functions

 $(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");}
    });
}

解决方案

Aside from not giving PHPs setcookie() what it wants for a 3rd parameter you also needed to set one parameter for $.ajax()'s .success() method.

After that you can make .success(data) handle the data however you want.

Note the JSON data I am passing in place of the data property in the ajax-post.html file.

data: {"config_copy": config_copy}

Depending on the data you're handling you could just use Javascript to retrieve the cookie data.

Try the below inside your web browser's Console? After you've set the cookie ( assuming you set only the one cookie pivot_config)

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

Also to note cookies are limited in the amount of data they can store.

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>

这篇关于阿贾克斯后到PHP。保存cookie,并寄回给JavaScript的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆