有没有办法让用户从HTML SELECT下拉列表中选择一个项目,然后在它离开页面之前将其存储在$ _SESSION变量中?我知道显而易见的方法是让FORM返回到同一页面然后检查正在设置的变量,但是我正在尝试修改其他人没有重大改写的事情!
即。可以设置一个会话变量,其值的变化取决于用户的SELECT选项而不重新加载页面吗?
非常感谢。
答案 0 :(得分:4)
这叫做AJAX。
http://nl.wikipedia.org/wiki/Asynchronous_JavaScript_and_XML
但是没有纯PHP方式,因为PHP只是服务器端。
所以你将不得不求助于javaScript。
答案 1 :(得分:1)
您需要使用AJAX来执行此操作。
答案 2 :(得分:1)
在不重新加载页面的情况下修改$ _SESSION变量的唯一方法是执行异步请求(即AJAX)。
从技术上讲,您无法从客户端修改会话变量。这意味着您需要以某种方式向服务器发出请求 - 通过重新加载页面,发布到不同的页面或使用Ajax发出超出绑定的请求。
答案 3 :(得分:1)
您需要从HTML向脚本发出AJAX请求,您可以使用jQuery *
$(document).ready(function()
{
$("#dropdown").change(function()
{
var link = 'updateSession.php?value_to_update='.$(this).val();
$.ajax({
url: link,
type: "GET",
dataType: "html",
success: function(html)
{
$('#message').html(html);
}
});
});
});
*其他JavaScript库可用
答案 4 :(得分:0)
在您的HTML文件中,您有这个jquery / javascript代码:
$(document).ready( function() {
$("#my_select").change( function() {
// alert($(this).val());
url = "MyPage.php";
var myData = {};
myData['my_select'] = $(this).val();
jQuery.get( url, myData, function(data)
{
// console.log(data);
// the placeholder where you wanted to show it
$("#my_session_select_value").html(data);
});
});
});
并在你的php文件(存储会话值)上有这段代码:
session_start();
$_SESSION['my_select'] = $_GET['my_select'];
// if you wanted a json encoded result
// echo json_encode($_SESSION);
// if you wanted a direct value
echo $_SESSION['my_select'];