[英]serialize post datatables form to laravel controller for saving
我有一個數據表,某些列中的某些輸入是可編輯的。 我想將編輯后的值保存在db中。
這是我的數據表:
值中的序列化數據表如下所示(如果您使用print_r($_POST)
進行調試):
JavaScript的 -我張貼的數據表通過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);
}
}
代碼運行時,ajax請求完成后,我在javascript中得到一個空的alert()
。
我認為問題可能出在與數據庫事務相關的代碼上,所以我嘗試注釋掉以下內容:
// DB::beginTransaction();
// DB::commit();
// DB::rollback();
但這也會產生相同的結果(空警報)。 知道有什么問題嗎? 如何調試呢? 某處一定有問題...
您的postUpdateCreateLines()
方法實際上未返回任何內容; 您正在做出回應,但是您需要將其return
:
return Response::make('Purchase order details updated', 200);
但是,您還可以進行其他一些改進。 最好返回$.ajax
調用的JSON響應,然后依靠jQuery的ajax .done
和.fail
處理程序來適當地處理響應(而不是使用complete
):
return Response::json(
['status' => 'success',
'msg' => 'Purchase order details updated']
, 200)
...並將響應dataType
添加到您的ajax調用中:
dataType: "json"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.