gpt4 book ai didi

javascript - 从 jQuery 设置 cookie 并从 php 读取的正确方法

转载 作者:行者123 更新时间:2023-12-03 05:38:22 25 4
gpt4 key购买 nike

我尝试读取 PHP 中通过 jQuery 设置的 cookie 值。但在第一次页面加载时不会读取它。但我看到它已经由 jQuery 设置并且可以从 jquery 读取相同的值。

当尝试从 PHP 读取该 cookie 值时,第一次呈现页面时不会显示该值。但再次刷新页面,它给出了来自 php 的值。(我需要刷新页面 2 次才能获得正确的值)

我使用了 head 标签和 onload 方法来放置 setCookie() 函数。但结果是一样的。

我用过this用于编写 cookie 的 jQuery 库。

这是我用来读取和写入 cookie 的代码。

<?php
if (!isset($_SESSION)) {
session_start();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
body{
background: #666666;
}
</style>
<script src="js/jquery.min.js" type="text/javascript"></script>
<script src="js/jquery.cookie.js" type="text/javascript">/script>
<script>
setCookie();
function setCookie() {
console.log('on Load');
var data_spl = $(location).attr('href').split('#?camlist=')[1];
if (data_spl != undefined) {
var len = data_spl.split(',').length;
$.cookie("len", len);
console.log($.cookie("len"));
} else {
console.log('undefined');
}
}
</script>
</head>
<body>
<?php
for ($i = 0; $i < 100; $i++) {
echo "<script>console.log('START');</script>";
echo "<script>console.log('" . $_COOKIE['len'] . "');</script>";
echo $_COOKIE['len'];
echo "<script>console.log('END');</script>";
}

echo "WIDTH & HEIGHT :" . $_SESSION['width_x'] . "-" . $_SESSION['height_y'];
?>
</body>
</html>

编辑:

我使用另一个 php 页面来设置来自 java 脚本的 session 值,并通过 jQuery 调用该页面,如下所示。

var len = $(location).attr('href').split('#?data=')[1].split(',').length;
$.post('set_session.php', {params: len}, function (retparams) {
if (retparams.has) {
console.log('sucessfuly sent the paramlen!');
} else {
alert("can't read camarauids for grid making");
}
}, 'retparams');

set_session.php

<?php
if (session_status() == PHP_SESSION_NONE) {
session_start();
$_SESSION['urllen'] = 0;
}
if (isset($_POST['params'])) {
$_SESSION['urllen'] = $_POST['params'];
echo json_encode(array('retparams' => 'has'));
echo json_encode(array('datalen' => $_SESSION['urllen']));
} else {
echo json_encode(array('retparams' => 'error'));
}
?>

然后我尝试从index.php页面读取 session 值($_SESSION['urllen'])。但它也与上面相同。(我需要再次刷新页面才能获取从 jQuery post 函数设置的正确值。)

最佳答案

正如评论部分中已经提到的,您的 Cookie 未出现在首页加载中,因为它尚未设置。 (如果直接在JS中设置Cookie或者通过AJAX设置Cookie本质上是一样的)

有效获取信息的唯一方法是通过页面重新加载或重定向或通过 AJAX 请求(取决于什么适合您的需求)。例如,您可以在设置 Cookie 后在 JS 中重定向:

//set your cookie in JS
window.location = location.host;

更多关于JS重定向的信息可以参见here或者您通过 Google 进行搜索。

您还可以在 PHP 中设置 Cookie 并使用 header() 函数进行重定向:

header('Location: http://www.example.com/');

有关 PHP 重定向的更多信息,请参见 here或在 Google 上;)​​

关于javascript - 从 jQuery 设置 cookie 并从 php 读取的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40650003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com