簡體   English   中英

將發布數據表表單序列化為laravel控制器以進行保存

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM