【问题标题】:jquery to create array from form datajquery从表单数据创建数组
【发布时间】:2012-11-22 21:15:25
【问题描述】:

我已经为这个问题苦苦挣扎了几个小时。

基本上,我需要做的是采用以下或类似的 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 获取类似于以下的数组到 php 脚本中:

   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);
});

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

【问题讨论】:

  • 标准表单提交,还是 Ajax? (与您的问题无关,您可以说 inpts.eq(0).val() 而不是 $(inpts.get(0)).val() - 省去您自己创建另一个 jQuery 对象的麻烦。)
  • 您的问题是什么?代码可以改进,但没关系。
  • nnnnnn,Ajax 代替标准表单提交
  • 你的问题解决了吗?
  • James,不,仍然没有在 item.date、item.close 或 item.open 中获取任何值。不过感谢您的帮助。我想我会试着睡在这个上。

标签: javascript jquery ajax arrays multidimensional-array


【解决方案1】:

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

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

Example: Send form data using ajax requests


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

【讨论】:

  • .serialize() 正是我需要的方法。谢谢!
【解决方案2】:

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

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

【讨论】:

  • 我应该指定我想通过 ajax 发送这个而不是直接将表单提交到 php
  • 你在哪里指定的,它甚至不是一个标签。在任何情况下都使用 $.post 发送一个帖子请求。api.jquery.com/jQuery.post
【解决方案3】:

我认为你应该这样做

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);
});

希望对你有帮助...

【讨论】:

  • 感谢您的及时回复。但是,您的代码出现以下错误: Uncaught TypeError: Object # has no method 'val'
  • 大声笑我刚刚尝试了你自己的代码,它似乎可以工作你到底想要什么??
  • 你为什么在使用[0]之类的东西后打电话给.val()?当您使用[0] 时,您将获得没有 jQuery 方法的 DOM 元素...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-05
相关资源
最近更新 更多