jquery从表单数据创建数组

时间:2012-12-05 04:56:31

标签: javascript jquery ajax arrays multidimensional-array

我已经在这个问题上挣扎了好几个小时了。

基本上,我需要做的是采用以下或类似的HTML:

<div id="excpdivs">
<div class="excpdiv" id="excpdiv0">
      Date: <input name="excp[0][date]">
      Open:  <input name="excp[0][open]">
      Close: <input name="excp[0][close]">
</div>
<div class="excpdiv" id="expdiv1">
      Date: <input name="excp[1][date]">
      Open:  <input name="excp[1][open]">
      Close: <input name="excp[1][close]">
</div>

通过AJAX获取类似于以下内容的数组:

   Array
(
    [0] => Array
        (
            [date] => 2012-09-15
            [open] => 3:00
            [close] => 5:00
        )
   [1] => Array
        (
            [date] => 2012-09-16
            [open] => 2:00
            [close] => 5:00
        )

)

我的主要问题是从输入元素中获取值。我最近的尝试如下:

    var results = [];
$(".excpdiv").each(function(){
    var item = {};
    var inpts = $(this).find("input");
    item.date = $(inpts.get(0)).val();
    item.open = $(inpts.get(1)).val();
    item.close = $(inpts.get(2)).val();
    results.push(item);
});

我是在正确的轨道还是我绝望地失去了?

3 个答案:

答案 0 :(得分:1)

也许是一个简单的序列化。

来自:api.jquery.com/jQuery.post /

Example: Send form data using ajax requests


$.post("test.php", $("#testform").serialize());

答案 1 :(得分:0)

我认为你应该这样做

var results = [];
$(".excpdiv").each(function(){
    var item = {};
    var inpts = $(this).find("input");
    item.date = $(inpts)[0].val();
    item.open = $(inpts)[1].val();
    item.close = $(inpts)[2].val();
    results.push(item);
});

希望它有所帮助...

答案 2 :(得分:0)

你不需要jquery,你拥有的HTML标记将为php提供一个数组。将输入封装在一个发布到php脚本的表单中以处理逻辑。然后,您可以通过以下方式访问您的信息:

$_POST['excp'][0]['date']