Napotkałem inny problem.Generanie robię tak, że po xajaxie odpalam funkcję pobierającą listę faktur i ta zwraca mi wywyłanie funkcji javascriptowej i jako argument podaje tablicę faktur.w templejtece:var stop = false;function stopPrinting() {console.log('stopPrinting executed')stop = true}function printInvoice(ids){console.log('dostalem dane', ids)if (ids.length < 1) {alert('No invoices found.')return}ids.forEach(function (id) {if (stop === true) {console.log('jest zatrzymane');return;}console.log('sprawdzam stop:', stop)xajax_printInvoice(id)})stop = true;}function fiscalize() {if ($('form[name="fiscalizeinvoices"] select[name="division"]').val( ) == '0') { alert('{trans("Division not selected!")}');return;}stop = falsexajax_getInvoices(JSON.stringify($('form[name=" fiscalizeinvoices"]'). serializeArray())); }funkcję fiscalize() odpalam z "przycisku" po wybraniu wartości z formularzateraz w php mam :function getInvoices($form){$obj = new xajaxResponse();$formArray = json_decode($form, true);$data = [];foreach ($formArray as $item){ // item['name] $item['value']$data[$item['name']] = $item['value'];}//to wyliczenia dat itp$invoices = LMSHelper::getInvoices($date['from'], $date['to'], htmlspecialchars($data['customer_type']), (int)$data['customer'],(int)$data['division'],(int)$data['group'],(isset($data['groupexclude']) ? true : false));$obj->call('printInvoice', $invoices);return $obj;}function printInvoice($id){$obj = new xajaxResponse();if ($id == '277333'){$obj->call('stopPrinting');} else {$obj->append('novitusLog', 'innerHTML', '<p>Wydrukowana faktura: '.$id.'</p>');}return $obj;}w funkcji printInvoice robię testowe i jeśli id faktury, docelowo w tym miejscu błąd, i jeśli pojawi się błąd chce przestać drukować resztę faktur.problem mój polega, że jak zwracam $obj->call('printInvoice', $invoices) to przeglądarka wywołuje tę funkcję tyle razy ile jest faktur a zwrotki przychodzą po jakimś czasie. chciałbym aby funkcja w javascript printInvoice() zaczekała na to co zwróci xajax_printInvoice(id) i dopiero wtedy szła dalej, czyli by ta funkcja była synchroniczna. Jak to osiągnąć?W dniu 12 kwietnia 2018 10:36 użytkownik Marcin <marcin@nicram.net> napisał:Ok, nie za tym "ifem" robiłem przypisanie do zmiennej 'xajax' :)W dniu 12 kwietnia 2018 09:59 użytkownik Marcin <marcin@nicram.net> napisał:WitamMoże ktoś podpowie. Jestem na ukończeniu pisania pluginu do drukarki fiskalnej i zostało tylko drukowanie wybranych faktur a chcę to zrobić asynchronicznie z wykorzystaniem xajax by w div z logiem były na bieżąco printowane statusy komunikacji z drukarką.w module robię funkcjęfunction printInvoice(){$obj = new xajaxResponse();$html = '<p>Sukcess</p>';$obj->assign('novitusLog', 'innerHTML', $html);return $obj;}na razie by zwracała mi po prostu statyczny tag htmlowy. w templejtce mam div o id="novitusLog" i do niego chcę pisać logi.dalej w module rejestruję funkcję i wrzucam do smartyglobal $LMS;$LMS->InitXajax();$LMS->RegisterXajaxFunction('printInvoice'); $SMARTY->assign('xajax', $LMS->RunXajax());w templejtce na samym początku mam {$xajax} ale niestety w tym miejscu czysto, żadne dane javascriptowe są nie drukowane :/Jak poprawnie to zrobić w LMSie? pomoże ktoś?--Pozdrawiam
Marcin / nicraM--Pozdrawiam
Marcin / nicraM--Pozdrawiam
Marcin / nicraM