Skrypt php po stronie backendu
public function getFromGus() { if( $this->request->is('ajax') ) { $gus = new GusApi('abcde12345abcde12345', 'dev'); $input = $this->request->input('json_decode'); $nip = filter_var($input->nip, FILTER_SANITIZE_STRING ); $gusResults = []; if($nip) { try { $gus->login(); $gusReports = $gus->getByNip($nip); foreach ($gusReports as $ind => $gusReport) { $nr_domu = $gusReport->getPropertyNumber() ? $gusReport->getPropertyNumber() : ''; $nr_lokalu = $gusReport->getApartmentNumber() ? $gusReport->getApartmentNumber() : ''; $separator = $nr_domu && $nr_lokalu ? '/' : ''; $gusResults[$ind]['name'] = $gusReport->getName(); $gusResults[$ind]['street'] = $gusReport->getStreet(); $gusResults[$ind]['number'] = $nr_domu . $separator . $nr_lokalu; $gusResults[$ind]['zip'] = $gusReport->getZipCode(); $gusResults[$ind]['city'] = $gusReport->getCity(); } $result = $gusResults; } catch (InvalidUserKeyException $e) { $result = ['error' => 'Błędny klucz użytkownika']; } catch (NotFoundException $e) { $result = ['error' => $gus->getResultSearchMessage()]; } } $this->set('result', $result); $this->set('_serialize', 'result'); } }
Skrypt Ajax – reakcja po naciśnięciu przycisku „POBIERZ DANE Z GUS”
let enterFields = function(resp){ if(resp.error) { alert('Błędne dane'); console.error(resp.error); return; } var adres = resp[0].street + " / " + resp[0].number; $('#nazwa-klienta').val(resp[0].name); $('#kod-klienta').val(resp[0].zip); $('#miasto-klienta').val(resp[0].city); $('#adres-klienta').val(adres); $('#gus-button').remove(); }; let getDataFromGus = function(nip){ var url = '/companies/get-from-gus.json'; var data = JSON.stringify({nip}); $.ajax({ url : url, data : data, dataType: 'json', type : 'post', success : function(resp){ enterFields(resp); }, error : function(e){ console.error(e.message);} }); };
Przycisk generowany przez JS
let showGusButton = function(nip){
var gusButton = $('<button type="button" id="gus-button" class="btn btn-success btn-block">POBIERZ DANE Z GUS</button>');
$(gusButton).on('click', function(){ getDataFromGus(nip); });
$('.cname-error').append(gusButton);
};