2013-10-29 58 views
0

我有一個動態生成的表單,允許用戶輸入新數據和編輯現有數據。提交表單時,它會對輸入值進行整理,並根據它們是否爲新進行分組,前者由class="new-entry"表示。CodeIgniter - 將多個陣列發佈到控制器

因此該函數會生成兩個數組:updateDatainsertData。兩個陣列是類似格式:

[ 
    0: { 
     'id' = 1, 
     'value' = foo 
    }, 
    1: { 
     'id' = 1, 
     'value' = 'bar' 
    }, 
    etc... 
] 

我它們合併成一個新的數組對象通過AJAX發送到控制器:

var postData = { 
    'update_data': updateData, 
    'insert_data': insertData 
}; 

然後在AJAX調用:

$.post(url, postData, function() { // some code }); 

但是,在控制器中,做print_r($this->input->post())print_r($_POST)作爲測試只返回Array()。即使$this->input->post('update_data')也不會返回任何內容。

如何在控制器中檢索這些數組?

+0

得到的是'updateData' JSON字符串?否則,我建議'JSON.stringify(updateData)'。當然,'insertdata'也一樣。 – Johan

+0

我剛剛在我的本地主機上試過你的代碼,它工作正常。 但我做了什麼,我不知道你做的是否我用 '$('。form')。serializeArray()' 你可能需要它! –

+0

@Johan我嘗試在updateData和insertData上使用JSON.stringify(),但控制器完全沒有返回任何內容,甚至沒有返回空數組。 – Bobe

回答

1

它不是Codeigniter的問題。在發送之前將數組轉換爲適當的JSON對象(stringify)。

使用

var postData = { 
    'update_data': JSON.stringify(updateData), 
    'insert_data': JSON.stringify(insertData) 
}; 

$.post(url, postData, function() { // some code }); 

和控制器,你可以通過

$update_data=json_decode($this->input->post('update_data')); 
$insert_data=json_decode($this->input->post('insert_data')); 
+0

我之前嘗試過,但我無法得到它返回任何東西。 – Bobe

相關問題