我需要使用 jQuery 设置一个 PHP $_SESSION 变量。如果用户单击图像,我想将与该图像关联的一条信息保存为 php.ini 中的会话变量。
我想我可以通过调用 php 页面或函数并将该信息附加到查询字符串来做到这一点。
有任何想法吗。我通过谷歌几乎没有找到帮助。
谢谢迈克
我需要使用 jQuery 设置一个 PHP $_SESSION 变量。如果用户单击图像,我想将与该图像关联的一条信息保存为 php.ini 中的会话变量。
我想我可以通过调用 php 页面或函数并将该信息附加到查询字符串来做到这一点。
有任何想法吗。我通过谷歌几乎没有找到帮助。
谢谢迈克
你不能单独通过 jQuery 来做到这一点;您将需要 Ajax(可以使用 jQuery)和 PHP 后端的组合。一个非常简单的版本可能如下所示:
HTML:
<img class="foo" src="img.jpg" />
<img class="foo" src="img2.jpg" />
<img class="foo" src="img3.jpg" />
Javascript:
$("img.foo").onclick(function()
{
// Get the src of the image
var src = $(this).attr("src");
// Send Ajax request to backend.php, with src set as "img" in the POST data
$.post("/backend.php", {"img": src});
});
PHP(后端.php):
<?php
// do any authentication first, then add POST variable to session
$_SESSION['imgsrc'] = $_POST['img'];
?>
可能想尝试将 PHP 函数放在另一个 PHP 页面上,并使用 AJAX 调用来设置变量。
您正在寻找的是jQuery Ajax。然后只需设置一个 php 页面来处理请求。
这里的很多回复都在解决如何而不是为什么。PHP $_SESSION 键/值对存储在服务器上。这与存储在浏览器上的 cookie 不同。这就是为什么您能够从 PHP 和 JavaScript 访问 cookie 中的值的原因。更糟糕的是,来自浏览器的 AJAX 请求不包括您为网站设置的任何 cookie。因此,您必须让 JavaScript 提取会话 ID cookie 并将其包含在每个 AJAX 请求中,以便服务器能够对其进行正面或反面。从好的方面来说,如果 cookie 没有与 HTTP 标头一起发送,PHP 会话被设计为故障转移到 HTTP GET 或 POST 变量。
我还自己设计了一个“php session value setter”解决方案(类似于 Luke Dennis 的解决方案。这里没什么大不了的),但是在设置了我的 session 值之后,我的需求是“跳转到另一个 .php 文件”。好的,我做到了,在我的 jquery 代码中......但有些东西不太奏效......
我的问题很简单:
- 在你“$.post”你的值到小的 .php 文件之后,你应该等待一些“成功/失败”返回值,并且只有在读取这个成功值之后,才执行跳转。如果您只是立即跳转到下一个大 .php 文件,您的会话值可能尚未设置到 php 会话运行时引擎上,并且您可能会在执行 $_SESSION["my_var"]; 时读取“空” 从目标 .php 文件。
就我而言,为了纠正这种情况,我以这种方式更改了我的 jQuery $.post 代码:
$.post('set_session_value.php', { key: 'keyname', value: 'myvalue'}, function(ret){
if(ret==0){
window.alert("success!");
location.replace("next_page.php");
}
else{
window.alert("error!");
}
});
当然,你的 "set_session_value.php" 文件,应该返回 'echo "0"; ' 或 '回显“1”;'(或您可能需要的任何成功值)。
问候。
类似于卢克的答案,但使用 GET。
将此 php 代码放在 php 页面中,例如。获取页面.php:
<?php
$_SESSION['size'] = $_GET['size'];
?>
然后使用这样的 jQuery 脚本调用它:
$.get( "/getpage.php?size=1");
同意费德里科。在某些情况下,您可能会在使用 POST 时遇到问题,但不确定它是否与浏览器相关。
如果您在 javascript 部分将 onClick() 更改为 click(),它适用于 firefox。
$("img.foo").click(function()
{
// Get the src of the image
var src = $(this).attr("src");
// Send Ajax request to backend.php, with src set as "img" in the POST data
$.post("/backend.php", {"img": src});
});