Я отправляю данные на php через ajax POST. Я хочу сохранить его в php-файле cookie, а затем получить его в javascript через запрос GET ajax. В 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
Помимо того, что не задает PHP setcookie()
то, что он хочет для третьего параметра, вам также необходимо установить один параметр для $.ajax()
.success()
.
После этого вы можете сделать .success(data)
обрабатывать data
вы хотите.
Обратите внимание на данные JSON, которые я передаю вместо свойства data
в файле ajax-post.html
.
data: {"config_copy": config_copy}
В зависимости от данных, которые вы обрабатываете, вы можете просто использовать Javascript для извлечения данных cookie.
Попробуйте ниже в консоли вашего веб-браузера? После того, как вы установили файл cookie (если вы установили только один файл cookie pivot_config
)
escape( document.cookie.split('=').pop() ).replace('+', ' ')
Также отметить, что файлы cookie ограничены объемом данных, которые они могут хранить.
$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]; } }
<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>
<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>