Wyszukiwanie projektów po numerze (ciąg znaków) Ajax
Kod Javascript
function clearResults() { removeHiddenUserField(); $('#search-results').empty(); } $("#search-project").on('keyup', function(){ clearResults(); var name_str = $(this).val(); var name_len = name_str.length; if( name_len >= 3 ) { var t; if(t) { window.clearTimeout(t); } t = window.setTimeout( function() { liveSearch(name_str); }, 200 ); } });
let liveSearch = function(search_str="") { var url = '/operator/projects/search-by-number.json'; var ul_results = $("#search-results"); $.ajax({ type : 'post', data : { search_str }, dataType: 'json', url : url, success : function(resp) { if(resp.resp.error) { console.error(resp.resp.error); return; } resp.resp.success.forEach( function(row, ind){ var name = row.number +" - "+row.name; }); }, error: function(e) { console.warning(e); } }); };
Kontroler Projects – PHP
public function searchByNumber() { if( $this->request->is('ajax') ) { $number = (string) $this->request->getParsedBody()['search_str']; $projects = $this->Projects->find() ->select(['id', 'name', 'number']) ->where(['number LIKE' => "%".$number."%"]) ->all(); if($projects) { $resp['success'] = $projects ; } else { $resp['error'] = "Nie ma takiego projektu"; } $this->set('resp', $resp); $this->viewBuilder()->setOption('serialize', ['resp']); } }