我有一些datatables與某些輸入在某些列是可編輯的輸入。我想將編輯後的值保存在數據庫中。序列化發表datatables窗體laravel控制器保存
這是我的數據表:
從值序列化的數據表看起來是這樣的(如果你print_r($_POST)
用於調試):
的JavaScript - 我發佈datatables通過ajax請求形成我的laravel api控制器方法,如下所示:
// Serialize the datatable table into post string
var poDetailUpdates = create_po_details_table.$('input').serialize();
// Call po api to save changes
$.ajax({
type: "POST",
data: poDetailUpdates,
url: '/api/po/update-create-lines/',
complete: function(response) {
if (response.status === 200) {
alert(response.responseText); // success
} else {
alert(response.responseText); // error
}
}
});
PHP - 這是我如何處理我的表單提交在laravel:
public function postUpdateCreateLines() {
DB::beginTransaction();
try {
foreach ($_POST as $column_name => $values) {
foreach ($values as $line_id => $new_value) {
DB::table('purchase_order_details')
->where('id', '=', $line_id)
->update(array($column_name => $new_value));
}
}
DB::commit();
Response::make('Purchase order details updated', 200);
} catch (Exception $ex) {
DB::rollback();
Response::make('Purchase order details not updated - '. $ex->getMessage(), 500);
}
}
當代碼運行,我在javascript得到一個空alert()
一次Ajax請求完成。
我想這個問題可能與數據庫事務相關的代碼,所以我嘗試註釋掉如下:
// DB::beginTransaction();
// DB::commit();
// DB::rollback();
但是,這也產生同樣的結果(空警報)。任何想法可能是錯誤的?如何調試呢?某些地方肯定出錯了......
對不起,我不知道我是如何錯過了。代碼是正確的,我忘了像你說的那樣「回覆」回覆。好,趕快,謝謝:) – Latheesan 2014-10-28 08:42:42