如何在不单击任何按钮的情况下将复选框值放入会话变量中?

Posted

技术标签:

【中文标题】如何在不单击任何按钮的情况下将复选框值放入会话变量中?【英文标题】:How to put in checkboxes values into a session variable without any button clicks? 【发布时间】:2022-01-14 12:14:21 【问题描述】:

可以说我有一个类似这样的代码

<form>
  <input type="checkbox" name="account1" value="1">
  <input type="checkbox" name="account2" value="2">
  <input type="checkbox" name="account3" value="3">
  <input type="checkbox" name="account4" value="4">


  <button type="submit">Delete</button>
</form>

现在我想在用户选中复选框而不单击提交/删除按钮的情况下将复选框的值存储在 php 会话中。我计划为此使用 jquery/ajax,但由于我对 ajax 或 jquery 非常陌生,所以我仍然无法完全理解它。

要添加更多细节,过程是这样的.. 用户可以选择他想要检查的任何帐户。假设他在第 1 页检查了一个帐户。然后他转到另一个页面(分页)然后返回第 1 页,选中的框仍然会被选中。

【问题讨论】:

考虑使用点击事件? anInput.addEventListener('click', dostuff) 然后回到第 1 页 - 分页究竟是如何处理的?如果它是服务器端的,那么您需要将其发送到服务器。如果是客户端,那么客户端应该处理它。 我不太明白,但我使用 php 查询进行分页。至于点击事件,就像我说的 jquery/ajax/javascript 非常新。我确实知道它的作用,但我只是不知道 javascript/ajax/jquery 是如何连接到 php 会话的 &lt;input type="checkbox" name="account2" value="2" checked&gt;... ? 据我了解,您正在从后端加载数据。如第一条评论中所述添加事件侦听器,并使用Fetch API 将状态更改发送到后端。在页面更改时,您必须根据后端的数据设置状态。 【参考方案1】:

您可以为此使用onchange 事件监听器。

现场示例here。

index.php

<form>
    <input type="checkbox" name="account1" value="1">
    <input type="checkbox" name="account2" value="2">
    <input type="checkbox" name="account3" value="3">
    <input type="checkbox" name="account4" value="4">


    <button type="submit">Delete</button>
  </form>

  <br/><strong>You can see the checkbox values in session below...</strong>
  <div id="newDiv">
  </div>

  <script>
  $('*[type="checkbox"]').on("change", function()
    var check = 0;
    if(this.checked == true) check = 1;
    var value = this.value;
    $.post("session.php",  box : value, check : check , function(data, status)
      if(status == "success")
        $('#newDiv').load("values.php");
      
    )
  )
  </script>

session.php

<?
session_start();
if(isset($_POST['box']))
  //Separate session variable for each checkbox.
  $checkbox = "checkBox".$_POST['box'];
  $_SESSION[$checkbox] = $_POST['check'];

?>

values.php

<?
session_start();
print_r($_SESSION);
?>

如有任何疑问,请发表评论。

【讨论】:

感谢您的建议!我遵循了 jquery,但我对 session.php 和 values.php 做了一些调整。我将它们放入数组中,其中 accountid 和 check boolean 作为数字键内的键。真的对我有帮助,再次感谢!

以上是关于如何在不单击任何按钮的情况下将复选框值放入会话变量中?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用角度的ng的情况下将输入值从父组件传递给子组件?

如何在不收集的情况下将 RDD、Dataframe 或 Dataset 直接转换为广播变量?

如何在不显示附加信息的情况下将附加信息放入用于 ListView 的 Arraylist

如何在不单击tkinter python的情况下读取单选按钮值

如何在不刷新页面的情况下将值从 jsp 页面发送到数据库

在不丢失纵横比的情况下将图像放入特定大小的盒子中?