2012-12-23 91 views
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 
    ) 
) 

有沒有簡單的方法來實現這一點?我聽說過的序列化()函數,但是這不是我想要的......

回答

1

我做我自己所有的時間,但我這樣做在PHP端通過數組循環:

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

等..

所以你不斷通過AJAX發送你的數據,因爲它是做一切在服務器端,您可以排序,做任何你處理之前需要將陣列和輸出結果

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

     } 
    } 
} 
+0

是的,這是正確的,但我們誤解了。我不想讓$ _POST看起來像你發給我的。每個領域(例如日期,收入,稅收)都應該與索引關聯(就像我在第一篇文章中發佈的結構)。 編輯:對不起隊友......剛把我的感官回來......你說得對。這應該做的伎倆(關於該foreach循環)。 – p3le

+0

看最後的循環...你必須重新調整數據的地方..最簡單的做到這一點在PHP中,但它可以在JavaScript中完成 – charlietfl

+0

我找到了這樣的東西:(「#selector).map(function(){return $(this).val();})。get();這將返回像charlietfl說的結構,而不使用序列化()在PHP中,我將處理。 – p3le