資料傳輸方法:
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);
}