資料傳輸方法: 1. 透過「js」讀取欄位資料,並組成「term」陣列,利用「AJAX」方式傳送經由「路由api」傳送給「Controller」 2. 「Controller」負責驗證是否有資料,向「Model」傳送「參數」 3. 「Model」取得資料庫內容後,回傳「表格內容」給「Controller」 4. 「Controller」取後「表格內容」後,組成「JSON」回傳給「js」 5. 「js」取得「JSON」後,組出所需畫面 資料傳輸範例: 1. 後台職缺搜尋功能 2. 製作「job_search.blade.php」頁面「表單」內容
3. 透過「job_search.js」撰寫下列「按鈕」事件,將「表單」內容組成「陣列資料」,並透過「AJAX」向「http://domain/job_list」傳送「陣列資料」 getJobList(); function getJobList(term) { var postData = { staff_id: $.cookie('staff_id'), staff_token: $.cookie('staff_token') }; term = (typeof term == 'undefined') ? {} : term; postData = Object.assign(postData, term); $.ajax({ url: urlApi + 'job_list', type: 'POST', data: postData, dataType: 'json', timeout: 0, global: false, async: false, error: function() { alert('出錯,請重試'); }, success: function(res) { if (res.stat == "success") { if (res.total > 0) { var data = res.data; $('#tbody_job_list').html(getJobTable(data)); } else { $('#tbody_job_list').html('查無資料。'); } } else { myalert(res.error_msg); } } }); } $('#btnSearch').click(function() { var term = { seField: $('#seField').val(), seKeyword: $('#seKeyword').val(), //2020-3-4 自訂排序功能 seOrder: $('#seOrder').val() }; getJobList(term); }); 4. 於「路由 api.php」中定義「http://domain/job_list」為「Admin\AdminJobController.php」檔案中的「getJobList」方法 Route::post('job_list', 'Admin\AdminJobController@getJobList'); 5. 於「Admin\AdminJobController.php」檔案中撰寫「getJobList」方法,取得「AJAX」傳送過來的「陣列資料」之內容 public function getJobList(Request $request) { $staff_id = ( $request->input('staff_id') ) ? $request->input('staff_id') : ""; $staff_token = ( $request->input('staff_token') ) ? $request->input('staff_token') : ""; $auth = AdminToken::verifyToken($staff_id, $staff_token); if(!$auth) { $result = array('stat' => 'error','error_msg'=>'已閒置過久,請重新登入。'); return $result; } $validator = Validator::make( $request->all(), [ 'staff_id' => 'required', 'staff_token' => 'required' ], [ 'staff_id.required' => 'staff_id未輸入', 'staff_token.required' => 'token未輸入' ] ); $result = array(); if ($validator->fails()) { $result['stat'] = 'error'; $result['error_msg'] = $validator->messages(); } else { $term = array(); if( $request->input('seField') ) { $term['seField'] = $request->input('seField'); } if( $request->input('seKeyword') ) { $term['seKeyword'] = $request->input('seKeyword'); } //2020-3-4 自訂排序功能 if( $request->input('seOrder') ) { $term['seOrder'] = $request->input('seOrder'); } $jobList = AdminJob::getJobList($term); $result['stat'] = 'success'; $result['total'] = $jobList['total']; if($result['total'] > 0) { $result['data'] = $jobList['data']; } } return response()->json($result, 200); }