将字段值转换为数组并将其传递给php

时间:2016-05-03 10:42:46

标签: php jquery arrays

我有一个用于设置商店时间的表格如下:

<table class="table">
   <tbody>
      <tr>
         <td tabindex="0">Monday</td>
         <td><label class="Storeopen">Open</label></td>
         <td><input type="time" id="day_1_open" name="day_1[]" value="16:00"></td>
         <td><label class="Storeclose">Close</label> </td>
         <td><input type="time" id="day_1_close" name="close" value="00:00"></td>
      </tr>
      <tr>
         <td tabindex="0">Tuesday</td>
         <td><label class="Storeopen">Open</label></td>
         <td><input type="time" id="day_2_open" name="open" value="16:00"></td>
         <td><label class="Storeclose">Close</label> </td>
         <td><input type="time" id="day_2_close" name="close" value="00:00"></td>
      </tr>
      <tr>
         <td tabindex="0">Wednesday</td>
         <td><label class="Storeopen">Open</label></td>
         <td><input type="time" id="day_3_open" name="open" value="16:00"> </td>
         <td><label class="Storeclose">Close</label> </td>
         <td><input type="time" id="day_3_close" name="close" value="00:00"></td>
      </tr>
      <tr>
         <td tabindex="0">Thursday</td>
         <td><label class="Storeopen">Open</label></td>
         <td><input type="time" id="day_4_open" name="open" value="16:00"> </td>
         <td><label class="Storeclose">Close</label> </td>
         <td><input type="time" id="day_4_close" name="close" value="00:00"></td>
      </tr>
      <tr>
         <td tabindex="0">Friday</td>
         <td><label class="Storeopen">Open</label></td>
         <td><input type="time" id="day_5_open" name="open" value="16:00"> </td>
         <td><label class="Storeclose">Close</label> </td>
         <td><input type="time" id="day_5_close" name="close" value="00:00"></td>
      </tr>
      <tr>
         <td tabindex="0">Saturday</td>
         <td><label class="Storeopen">Open</label></td>
         <td><input type="time" id="day_6_open" name="open" value="16:00"> </td>
         <td><label class="Storeclose">Close</label> </td>
         <td><input type="time" id="day_6_close" name="close" value="00:00"></td>
      </tr>
      <tr>
         <td tabindex="0">Sunday</td>
         <td><label class="Storeopen">Open</label></td>
         <td><input type="time" id="day_7_open" name="open" value="16:00"> </td>
         <td><label class="Storeclose">Close</label> </td>
         <td><input type="time" id="day_7_close" name="close" value="00:00"></td>
      </tr>
   </tbody>
</table>

现在。要获取数据,我使用以下jQuery代码:

        var newTiming = new Array();
        for(var n=1; n<=7; n++){
            newTiming["day_"+[n]] = {"open": $("#day_"+n+"_open").val(), "close":$("#day_"+n+"_close").val()};
            console.log(newTiming);
        }

我的问题是我可以在控制台中获取数据但是当我尝试将数组存储到隐藏文本字段中以将其传递给我的PHP时,我无法到达任何地方。

我尝试通过以下代码将数组放入隐藏字段:

$("#deliveryTimings").val(JSON.stringify(newTiming));

我需要得到的是以下形式的数组:

"day_1" => array(
                 "open" => "16:00",
                 "close" => "00:00"
),

这是更大表格的一部分。我试图通过jQuery保存每个部分。页面上没有标记和许多其他输入字段。我的每个部分的保存按钮都针对特定部分。这就是为什么我不能使用serializeArray()?我正在使用这个jQuery代码来获取数据。

我希望在这里得到社区的帮助。谢谢。

更新 我通过使用PaulMaček在https://github.com/macek/jquery-serialize-object

上使用jQuery Serialize Object找到了最终的解决方案

1 个答案:

答案 0 :(得分:0)

您可以使用serializeArray()获取表单数据。要删除for循环,您可以在name=""这样的字段中打开和关闭字段:

          <tr>
             <td tabindex="0">Monday</td>
             <td><label class="Storeopen">Open</label></td>
             <td><input type="time" id="day_1_open" name="day_1[open]" value="16:00"></td>
             <td><label class="Storeclose">Close</label> </td>
             <td><input type="time" id="day_1_close" name="day_1[close]" value="00:00"></td>
          </tr>
          <tr>
             <td tabindex="0">Tuesday</td>
             <td><label class="Storeopen">Open</label></td>
             <td><input type="time" id="day_2_open" name="day_2[open]" value="16:00"></td>
             <td><label class="Storeclose">Close</label> </td>
             <td><input type="time" id="day_2_close" name="day_2[close]" value="00:00"></td>
          </tr>

通过重命名您的字段,您应该在服务器端获取按日期编号组织的数据。