复选框值未通过JSON

时间:2015-04-26 05:28:31

标签: php json checkbox

工作正常。我很惊讶突然发现,复选框值不会通过json在$ _POST中传递。我似乎无法理解为什么。 希望有人可以帮助我.Below是php中的复选框。

$subjects_id= $row['subid'];

<td><input type="checkbox" name="sub['.$subjects_id.']" id="sub" value="">     </td>';

JSON

$("document").ready(function(){
  $(".form").submit(function(){
    var data = {
      "action": "test"
    };
    data = $(this).serialize() + "&" + $.param(data);
    $.ajax({
      type: "POST",
      dataType: "json",
      url: "response.php", //Relative or absolute path to response.php file
      data: data,
      success: function(data) {
        $(".the-return").html(
          "Favorite beverage: " + data["favorite_beverage"] + "<br />Favorite restaurant: " + data["favorite_restaurant"] + "<br />Gender: " + data["gender"] + "<br />JSON: " + data["json"]
        );

        alert("Form submitted successfully.\nReturned json: " + data["json"]);
      }
    });
    return false;
  });
});

我确信JSON没有问题。但我怀疑我的PHP的复选框。在JSON键值对中,虽然已选中复选框,但未传递该复选框!

EDIT ::

在我的故障排除中,我发现下面的一组复选框实际上与上面的内容相冲突。所以当它们显示上面没有收集的复选框值时。当我注释掉这些时,会收集上面的复选框值!

<table class="small-12 medium-12 large-6 large-centered columns" class="availability">
                  <tr>
                      <th></th><th>Weekdays</th><th>Weekends</th>
                  </tr>
                  <tr>
                      <td class="text-right">Morning<br/>(8am-12m)</td>
                      <td>
                         <div class="switch demo3">
                             <input type="checkbox" name="m_week" id="m_week">
                    <label><i></i></label>
             </div>
                      </td>
                      <td>
                          <div class="switch demo3">
                    <input type="checkbox" name="m_end" id="m_end">
                    <label><i></i></label>
              </div>
                      </td>
                  </tr>
                  <tr>
                      <td class="text-right">Afternoon<br/>(12am-6m)</td>
                       <td>
                            <div class="switch demo3">
                    <input type="checkbox" name="a_week" id="a_week">
                    <label><i></i></label>
                    </div>
                       </td>
                      <td>
                          <div class="switch demo3">
                    <input type="checkbox"  name="a_end" id="a_end">
                    <label><i></i></label>
                </div>
                      </td>
                  </tr>
                  <tr>
                      <td class="text-right">Evening<br/>(6am-10m)</td>
                       <td>
                            <div class="switch demo3">
                    <input type="checkbox"  name="e_week" id="e_week">
                    <label><i></i></label>
                </div>
                       </td>
                      <td>
                           <div class="switch demo3">
                    <input type="checkbox" name="e_end" id="e_end">
                    <label><i></i></label>
                </div>
                      </td>
                  </tr>
              </table>

1 个答案:

答案 0 :(得分:0)

如果选中,您的复选框将发送为true,但如果未选中则为空。您可以使用以下方法更正它:

$('checkbox').each(function(){
    $(this).val( checkbox[0].checked ? "true" : "false" );
});

复选框。

这会将复选框的值设置为&#34; true&#34;或&#34;假&#34; (value属性是一个字符串)。