【问题标题】:Form using AJAX / jQuery to set session with dropdown menu使用 AJAX / jQuery 的表单通过下拉菜单设置会话
【发布时间】:2012-06-03 21:21:03
【问题描述】:

我相信这个问题会涉及到 AJAX、jQuery、PHP 和会话。我已经尝试了几天,但无法破解这个。多次散步后重新开始。

我只是想要一个带有不刷新/重新加载屏幕的下拉框的表单。将选择保存为 SESSION 并根据他们刚刚设置的会话“选择”或突出显示下拉选项。

简而言之... - 客户端选择选项(必须使用 onchange 事件而不是点击提交) - 使用 jQuery / AJAX 这有助于防止页面重新加载(正确吗?) - 下拉选项被“记住”,因为它使用会话来比较并“选择”它。 - 还能够在同一页面上回显/打印会话。

我将在使用复选框、单选框、输入框和下拉菜单的订购表单的多个步骤中使用这个简单的示例。

如果有人知道使用下拉框的简单示例,那我就开始吧。

我之前的尝试只会使用下拉列表的第一个或最后一个而不是选择的一个来设置会话。

【问题讨论】:

    标签: php jquery ajax session


    【解决方案1】:

    我过去做类似事情的方式是让用户会话(作为后端的一个类)在每次页面加载时都被初始化。这样我可以保存上述变量。

    但这也允许您在后台拥有一组对象,这些对象派生自该用户类并可用于替换其他项目。

    1)对于简单页面,您需要构建一个控件,该控件读取数组会话中选择框的默认值。

    2) 编写一个非常简单的 PHP 页面来处理更改值(我假设您只是将它存储到会话而不是数据库)

    <?php
    session_start();
    $client = $_GET['cc'];
    $_SESSION['package']['overrideClient'] = $client; 
    echo $_SESSION['package']['overrideClient'];
    ?>
    

    3) 将更改绑定到您的下拉菜单 变种变化= { 更改值:函数(obj){ var val = $(obj).val(); $.ajax({ url:"path.php?Page="+val, 成功:函数(){ //在这里做点什么 }});}};

    4) 现在这个项目在会话中,任何其他页面都可以使用 $_SESSION['package']['overrideClient']; 动态调用。或者通过使用会话包初始化一个类来为用户构建更复杂的处理。

    这应该会让你指向正确的方向:)

    【讨论】:

    • 非常感谢您的帮助,但我不太了解如何编写代码。在本教程链接上,可能有一种方法可以解决此问题,但我对某行有一个问题。 askaboutphp.com/213/… 在第 24 行和第 25 行的示例中......它有 $.post('process.php', $("#myform").serialize(), function(data) { $('#results') .html(data); 这是我要添加会话数据的脚本部分吗?我希望用户可以选择下拉菜单,onchange 或 change 触发它,会话已设置。
    • 会话必须在 PHP 中完成。由于 PHP 是一种服务器端语言,并且您在客户端工作,因此您需要首先通过 Javascript 将值传递回 php(或刷新不好的页面)使用:function test(){ $.post('process .php', { "value" : $('$selectbox').val()}) });并在您的选择框上添加 onchange="test();"在 Process.php 中,您将查找 $_POST 的“值”,然后将其保存到您的会话中。
    • 这个 stackoverflow 页面看起来几乎和我需要的一样。 stackoverflow.com/questions/10365464/… 使用它,我可以使用下拉菜单,并将变量保存到数据库中。但是,我仍在尝试使用它来设置 SESSION 变量而不是保存到数据库。一旦php页面设置了会话,有没有办法在下拉菜单下方显示会话变量?我试过 echo 但我猜保存 $_POST 并不是所有需要的正确吗?我还需要在脚本中输入一些代码来检索会话变量吗?
    • 不想保存到数据库并且只进行会话的原因是因为当购物者进入并浏览时..这确实会用“临时”数据填充数据库并且似乎没有高效的。这是一个很好的假设吗?只在承诺之前使用会话?
    • 只使用会话就可以了。在此示例中,当用户保存到数据库时,使用我的代码块将其保存到会话中,你会很好:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-20
    • 1970-01-01
    • 2012-05-27
    • 2012-02-22
    • 1970-01-01
    • 2014-02-20
    相关资源
    最近更新 更多