使用 .serializeArray 从所有选中的复选框中获取值

Posted

技术标签:

【中文标题】使用 .serializeArray 从所有选中的复选框中获取值【英文标题】:Get value from all checked checkboxes with .serializeArray 【发布时间】:2016-04-14 06:29:40 【问题描述】:

已解决 我没有在输入字段中使用“名称”。当我在输入中添加名称时,我立即工作。

我有一个中等大小的菜单,其中包含几个子类别和许多复选框。我使用 phpmysql 和 jquery/javascript 处理自定义 CMS。

菜单是一个带有“保存”按钮的表单,需要从选中的复选框中获取所有值。

在按钮上,我使用了 onclick 函数,该函数会导致我使用这些 id 并将它们存储在表中的类。

<input type="submit" value="Save" class="save-butt" onclick="sjx('domain', $( ':checkbox' ).serializeArray()); return false;">

它不起作用;我没有收到任何错误,但似乎没有发送该值。 如果有帮助,这是我的菜单代码。

          <div class="personal-right-box">
        <ul class="doe-list">

        <?php 
        $mainCat = Db::query('SELECT * FROM categories WHERE parent_id = 0 ORDER BY orderby DESC');
        foreach ($mainCat as $main)  ?>

          <li>
            <span><i class="fa fa-caret-down toggle-down"></i><?php echo $main['title_hr']; ?></span>
            <ul class="doe-list-sub">
              <?php 
              $subCat = Db::query('SELECT * FROM categories WHERE parent_id = '.$main['id'].' ORDER BY title_hr ASC');
              foreach ($subCat as $sub)  ?>
              <li>                    
                <input type="checkbox" name="" id="aaeroplanes-b1-b2" value="<?php echo $sub['id']; ?>">
                <label for="aaeroplanes-b1-b2"><?php echo $sub['title_hr']; ?></label>
                <i class="fa fa-caret-down toggle-down"></i>
                <ul class="doe-list-sub">
                  <?php 
                  $subsubCat = Db::query('SELECT * FROM categories WHERE parent_id = '.$sub['id'].' ORDER BY title_hr ASC');
                  foreach ($subsubCat as $subsub)  ?>
                  <li>
                    <input type="checkbox" name="" id="piston-engine-aeroplanes-b1-2" value="<?php echo $subsub['id']; ?>">
                    <label for="piston-engine-aeroplanes-b1-2"><?php echo $subsub['title_hr']; ?></label>
                    <i class="fa fa-caret-down toggle-down"></i>
                    <ul class="doe-list-sub">
                      <?php 
                      $subsubsubCat = Db::query('SELECT * FROM categories WHERE parent_id = '.$subsub['id'].' ORDER BY title_hr ASC');
                      foreach ($subsubsubCat as $subsubsub)  ?>
                      <li>
                        <input type="checkbox" name="" id="cessna" value="<?php echo $subsubsub['id']; ?>">
                        <label for="cessna"><?php echo $subsubsub['title_hr']; ?></label>
                        <i class="fa fa-caret-down toggle-down"></i>
                        <ul class="doe-list-sub group">
                          <?php 
                          $items = Db::query('SELECT * FROM categories WHERE parent_id = '.$subsubsub['id'].' ORDER BY title_hr ASC');
                          foreach ($items as $item)  ?>
                          <li class="col-1-3">
                            <input type="checkbox" name="" id="" value="<?php echo $item['id']; ?>">
                            <label for=""><?php echo $item['title_hr']; ?></label>
                          </li>
                          <?php  ?>
                        </ul>
                      </li>
                      <?php  ?>
                    </ul>
                  </li>
                  <?php  ?>
                </ul>
              </li>
              <?php  ?>
            </ul>
          </li>

        <?php  ?>
        </ul><!-- end of .doe-list -->
        <span class="save-button-form">
          <input type="submit" value="Save" class="save-butt" onclick="sjx('domain', $( ':checkbox' ).serializeArray()); return false;">
        </span>
      </div>

感谢您的帮助。

【问题讨论】:

【参考方案1】:

首先序列化使用name,如果没有找到,则使用id。在您的情况下,您有一个空白name,因此在您的结果中。 您可以复制name 中的相同内容或将其删除。

【讨论】:

我用 id 试过但没有用,但用 name 效果很好。

以上是关于使用 .serializeArray 从所有选中的复选框中获取值的主要内容,如果未能解决你的问题,请参考以下文章

如何从 PHP 中的 serializeArray 获取 POST 值?

如何通过ajax从表单发送POST数据数组?

使用 .serializeArray() Javascript 时如何自定义键值对?

serializearray()的具体使用

jQuery序列化表单数据 serialize()serializeArray()及使用

jQuery ajax - serializeArray() 方法