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


Converting field values to array and pass it to php

我有一个设置存储时间的表格,如下所示:

<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代码来获取数据。

我希望得到这里社区的帮助。非常感谢。

更新:我通过使用Paul Maček的jQuery Serialize Object找到了最终的解决方案https://github.com/macek/jquery-serialize-object

您可以使用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>

通过像这样重命名字段,可以在服务器端获得按天数组织的数据。