0

我有这样的形式:

    <form id="incomes" method="post" action="#">
      <input type="text" name="date[]"/>
      <input type="text" name="income[]"/>
      <input type="text" name="tax[]"/>
      <input type="text" name="social_insurance[]"/>
      <input type="text" name="health_insurance[]"/>
    </form>

我想要做的就是通过 jQuery ajax 将输入发布到 php,结构如下:

Array(
    [0] => Array(
        date => 2012-12-10
        income => 1000
        tax => 100
        social_insurance => 50
        health_insurance => 50
    )
    [1] Array(
        date => 2012-12-15
        income => 2000
        tax => 150
        social_insurance => 20
        health_insurance => 50
    )
)

有什么简单的方法可以实现吗?我听说过 serialize() 函数,但这不是我想要的......

4

2 回答 2

1

我一直自己做,但我在 PHP 端通过数组循环:

$newarray = array();
foreach($_POST["date"] AS $i => $date) {
    $newarray[$i]["date"] = $date;
}

等等..

所以你继续通过ajax发送你的数据并在服务器端做所有事情,你可以在处理和输出结果之前对数组进行排序和做任何你需要的事情

于 2012-12-23T21:17:42.363 回答
0

使用 jQuery 发送表单数据serialize()是发送数据的最简单方法。您需要遍历 php 中的各个字段数组以创建所需的数组结构

$('#incomes').submit(function(){

    $.post(url, $(this).seralize(), function(response){
       /*run any  ajax complete code here*/
    }) ;
   /* prevent browser default form submit*/
   return false;

});

$_POST 看起来像:

  array(
      date=> array(),
       income=>array()/* etc*/
  }

PHP 新数组循环可能类似于:

$newArray=array();

foreach($_POST as $key=>$value){
    if( !empty( $value) && is_array($value)){
         for( $i=0;$i<count($value);$i++){
              $newArray[$i][$key]=$value[$i];

        }
    }
}
于 2012-12-23T21:22:49.457 回答