【问题标题】:serialize empty array inputs [duplicate]序列化空数组输入[重复]
【发布时间】:2012-09-16 20:26:42
【问题描述】:

可能重复:
Post the checkboxes that are unchecked

我在序列化空数组输入时遇到了问题。例如:

<input type="checkbox" name="test_checkbox[]" value="test" id="test">
<input type="checkbox" name="test_checkbox[]" value="test1" id="test1">
<input type="checkbox" name="test_checkbox[]" value="test2" id="test2">

当这些都没有被检查并且我提交表单(通过 POST)时,jQuery.serialize() 会排除它们并且它们不会出现在我的 $_POST/Serialized String 中。

但我需要像 test_checkbox=0 这样的东西,当没有勾选时。

我该怎么做?

【问题讨论】:

    标签: jquery post serialization input


    【解决方案1】:

    只需将其插入您的服务器代码中

    $_POST['test_checkbox'] = isset($_POST['test_checkbox']) ? $_POST['test_checkbox'] : 0;
    

    如果客户端都没有设置 $_POST['test_checkbox'] 变量,那么会将它们设置为 0。不过,我建议使用新变量而不是重置 $_POST 中的条目。

    【讨论】:

      【解决方案2】:

      试试这个方法 DEMO

         <form id="testform">
              <input type="checkbox" name="test_checkbox[0]" id="test" checked="checked" value="true"/>
              <input type="checkbox" name="test_checkbox[1]" id="test1" checked="checked" value="true"/>
          <span>click</span>
          </form>
      

      脚本

      $('span').click(function() {
          var formDate = $('#testform').serialize();
          console.log(formDate);
      })​
      

      现在你想这样看DEMO

      $('span').click(function() {
           var str=$('form input:not([type="checkbox"])').serialize();
          var str1=$("form input[type='checkbox']").map(function(){return this.name+"="+this.checked;}).get().join("&");
          if(str1!="" && str!="") str+="&"+str1;
          else str+=str1; 
          alert(str);
      })​
      

      【讨论】:

      • 取消勾选复选框,我得到控制台日志“空字符串”。那不是我想要的:)
      • 现在查看DEMO
      • 也试试这个方法FIDDLE
      猜你喜欢
      • 2018-10-04
      • 2012-06-23
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2011-03-31
      • 1970-01-01
      相关资源
      最近更新 更多