我需要使用jQuery设置PHP $ _SESSION变量。如果用户点击图像,我想将与该图像相关的信息保存为php中的会话变量。
我想我可以通过调用php页面或函数并将该信息附加到查询字符串来实现。
任何想法。我通过谷歌找到了一些帮助。
感谢 麦克
答案 0 :(得分:74)
你不能单独通过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(backend.php):
<?php
// do any authentication first, then add POST variable to session
$_SESSION['imgsrc'] = $_POST['img'];
?>
答案 1 :(得分:7)
可能想尝试将PHP函数放在另一个PHP页面上,并使用AJAX调用来设置变量。
答案 2 :(得分:5)
您正在寻找的是jQuery Ajax。然后只需设置一个php页面来处理请求。
答案 3 :(得分:5)
这里的很多回答都是针对原因而不是原因。 PHP $ _SESSION键/值对存储在服务器上。这与存储在浏览器中的cookie不同。这就是您能够从PHP和JavaScript访问cookie中的值的原因。 更糟糕的是,来自浏览器的AJAX请求不包括您为网站设置的任何cookie。因此,您必须使JavaScript拉出会话ID cookie并将其包含在服务器的每个AJAX请求中,以便能够对其进行正面或反面。从好的方面来说,PHP会话旨在故障转移到HTTP GET或POST变量,如果cookie不与HTTP标头一起发送。 我将研究RESTful Web应用程序的一些原则以及这些应用程序常见的设计模式的使用,而不是试图破坏会话处理程序。
答案 4 :(得分:3)
答案 5 :(得分:3)
我自己也设计了一个“php session value setter”解决方案(类似于Luke Dennis的解决方案。这里没什么大不了的),但在设置了会话值后,我的需求是“跳转到另一个.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”; '或'echo“1”; '(或者你可能需要的任何成功价值)。
问候。
答案 6 :(得分:1)
与Luke的答案类似,但与GET相似。
将此php代码放在php页面中,例如。 getpage.php:
<?php
$_SESSION['size'] = $_GET['size'];
?>
然后用这样的jQuery脚本调用它:
$.get( "/getpage.php?size=1");
同意费德里科。在某些情况下,您可能会遇到使用POST的问题,但不确定它是否与浏览器相关。
答案 7 :(得分:0)
如果你在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});
});