传递多个复选框值

Passing Multiple Check-box Values

本文关键字:复选框      更新时间:2023-09-26

>我有一个简单的html表单,使用复选框:

<form action="demo_form.asp">
    <input type="checkbox" name="test[]" value="t1">
    <input type="checkbox" name="test[]" value="t2">
    <input type="checkbox" name="test[]" value="t3">
    <input type="submit" value="Submit">
</form>

目前,如果我选中多个框并单击提交,服务器端会得到一个如下所示的数组:

[t1,t2,t3]

但我希望服务器为每个复选框开机自检。例如,如果我选中了所有 3 个框,我希望服务器 POST "value=t1",然后再次 POST 表示 "value=t2" 等等。有什么想法吗?

你在原始帖子正文中得到了test[]=t1&test[]=t2&test[]=t3。PHP 只是简单地将其处理成一个数组,因为名称中有[]

如果您不想要数组,则不要使用 [] 。你会得到一个原始的帖子 test=t1&test=t2&test=t3 ,但$_POST['test']只包含 t3 ,因为这将是该特定键名称的帖子正文中的 LAST 值。

例如,

您需要创建一个新函数

myArray = [t1,t2,t3];
for (var j in myArray){
   dynamicPost()
}
function dynamicPost(val){
$.ajax({
   type: "POST",
     url: url+val,
     data: data,
     success: success,
     dataType: dataType
});
}

通过这种方式,您可以为每个值创建新帖子。 我会工作,或者如果您在后端收到此数组与您需要为每个值创建一个 for 并制作流程的过程相同,如果我有更多信息,我会为您提供更多帮助

<form action="demo_form.asp">
<input type="checkbox" name="value1" value="t1">
<input type="checkbox" name="value2" value="t2">
<input type="checkbox" name="value3" value="t3">
<input type="submit" value="Submit">

尝试为每个复选框使用不同的名称

似乎您正在尝试实现的目标不能仅在PHP中完成,而是借助一些javascript魔法,它将侦听每个复选框的检查/取消选中事件,然后发送ajax请求。这是如何做到这一点:

更改复选框名称,并使用通用类使它们唯一:

<form action="demo_form.asp">
  <input type="checkbox" name="test1" value="t1" class="checkIt">
  <input type="checkbox" name="test2" value="t2" class="checkIt">
  <input type="checkbox" name="test3" value="t3" class="checkIt">
  <input type="submit" value="Submit">
</form>

然后侦听复选框事件:

$(document).ready(function() {
  $('.checkIt').bind('click', function() {
    var name = $(this).attr('name');
    var value = $(this).val();
    var status;
    if ($(this).is(":checked")) {
      status = 'checked';
      // checkbox is checked
      console.log("Checkbox is checked. Name: " + name + " Value: " + value);

    } else {
      status = 'unchecked';
      // checkbox is not checked
      console.log("Checkbox is NOT checked. Name: " + name + " Value: " + value);
    }
    $.get("demo_form.asp?status=" + status + "&name=" + name + "&value=" + value, function(data) {
      //Your server response here
    });

  });
});

这是一个小提琴供您玩:(打开您的控制台)

https://jsfiddle.net/ismaakeel/ejscjw3y/4/