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 new array ループは次のようになります。

$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 に答える