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);
};