多维数组结构,如php print_r

时间:2012-12-23 21:13:08

标签: jquery ajax multidimensional-array

我有类似的东西:

    <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()函数,但这不是我想要的......

2 个答案:

答案 0 :(得分:1)

我自己一直这样做但是我在PHP端循环遍历一个数组:

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

依旧......

因此,您可以继续通过ajax发送数据并在服务器端执行所有操作,在处理和输出结果之前,您可以对数组进行排序和执行任何操作

答案 1 :(得分: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 new array Loop看起来像:

$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];

        }
    }
}