Nette ajax abort/canceled error
- Čamo
- Člen | 786
Prosím vás netuší niekto prečo mi jednoduchý nette.ajax GET request
vracia abotr error?
Pritom na server ten request príde a všetko sa vykoná tak ako má ale
v javascripte sa dostanem do error callbacku.
Takto vyzerá js
// REMOVE INVOICE FROM DB
function deleteInvoice(invoice_id)
{
var invoicesDeleteUrl = {link Invoices:delete} + invoice_id;
console.log(invoicesDeleteUrl);
loadingSpinner('show');
$.nette.ajax({
'url': invoicesDeleteUrl,
//'type': 'GET',
//timeout: 5000,
success(data) {
showAlertMessage('Faktúra bola zmazaná.', invoiceListAlerts, 'success');
},
error: function (data, data2, data3) {
console.log(data);
console.log(data2);
console.log(data3);
showAlertMessage('Nepodarilo sa zmazať faktúru.', invoiceListAlerts, 'danger');
},
complete() {
loadingSpinner(null);
}
});
}
a takto vyzerá php
public function actionDelete($id)
{
$this->invoices->deleteInvoice($id); // Všetko OK
return $this->sendJson(['status' => 'success']); // Toto je rovnaké ako u iných metod ktoré bez problémov fungujú.
}
Tu je screenshot s console logom https://drive.google.com/…ucX0U3Y/view?…
Editoval Čamo (5. 1. 11:25)
- Infanticide0
- Člen | 64
Na funkčnost to asi vliv mít nebude, ale neni pro tyhle případy lepší spíš signál presenteru než action metoda?
Action bez redirectu/response jde renderovat šablonu, která v tomhle
případě neexistuje.
Signál by mohl mít i rychlejší zpracování, když ví, že nic renderovat
nebude.
Zajímalo by mě to.
Editoval Infanticide0 (5. 1. 16:21)
- kini
- Člen | 11
Podle toho screenshotu předpokládám že chceš aby se ti po odstranění té faktury automaticky překreslil jejich seznam. Pokut ano stačí ti v handleru zavolat redrawControl a překreslit snippet v šabloně.
public function handleDelete(int $id): void
{
$this->invoiceManager->deleteInvoice($id);
$this->redrawControl('invoicesContainer');
}
{snippet invoicesContainer}
// Tvůj seznam faktur.
<a class="ajax" n:href="delete! $invoice->id">Delete</a>
{/snippet}
- Čamo
- Člen | 786
Prepáčte že som nereagoval. Ďakujem za odpovede.
Problém bol pravdepodobne v tom že skutočne existuje v projekte niečo ako
abort request a v prípade že idú dva ajax requesty za sebou tak sa ten prvý
zruší. A to som práve robil, že som spúšťaľ dve po sebe idúce
requesty.
Keď som ten druhý presunul do success callbacku toho prvého requestu tak už
to funguje.