在离开页面之前,选择一个值并将其存储在PHP $ _SESSION变量中?

时间:2011-09-12 15:24:07

标签: php

有没有办法让用户从HTML SELECT下拉列表中选择一个项目,然后在它离开页面之前将其存储在$ _SESSION变量中?我知道显而易见的方法是让FORM返回到同一页面然后检查正在设置的变量,但是我正在尝试修改其他人没有重大改写的事情!

即。可以设置一个会话变量,其值的变化取决于用户的SELECT选项而不重新加载页面吗?

非常感谢。

5 个答案:

答案 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'];