Sto codificando un sito Web di aste in Laravel 5.0 che simula gli aggiornamenti in tempo reale utilizzando un poller AJAX che viene eseguito ogni 5 secondi. Il problema è che il mio server restituisce lo stato HTTP 401 sporadico.Laravel e AJAX errori sporadici 401 in un poller
Il mio percorso è costruito in questo modo:
Route::post(auction/live/update, '[email protected]');
mio controller è simile a questo:
public function ajaxSendUpdate() {
// Business logic: queries database, couple of Ifs, etc…
$data = array('success' => true, 'otherStuff' => $myData);
return Response::json($data);
}
Finalmente il mio poller è messa a punto in questo modo:
// a bit of HTML
function getAuctionUpdate() {
setTimeout(function() {
$.ajax({
type: "POST",
url: "{!! url('auction/live/update')!!}",
dataType: 'json',
data: {
auctionID: $('#auctionID').val()
},
success: function (data) {
if (data['success']) {
// Updates some labels, etc.
getAuctionUpdate(); // Rearms itself
}
}
} }); // Not sure if all brackets are correct in this snippet but they are 100% on real code
}, 5000);
Questo codice funziona benissimo circa il 95% delle volte. Tuttavia può rompere con 2 risultati diversi:
1) Il server risponde dopo un po 'di tempo all'errore 401 e non si riprende mai. In questo scenario dobbiamo accedere di nuovo. Dopo il login, tutto va bene e questo risultato non si ripresenta mai più.
2) Il server risponde con il 401 sporadico ma recupera nelle richieste di polling successive (o dopo alcune).
Sto usando Laravel 5.0 e una versione aggiornata di Xampp su Windows. L'errore è facilmente riproducibile con WAMP su Windows. Non testato in Linux né OSX. Ho letto this e this e thread assortiti in laracasts.com e altri forum, ma non sono in grado di risolvere il problema ...
Si ha un errore di sintassi. url: "{!!url ('auction/live/update') !!} ", – kotapeter
Hai ragione ma quello era un problema con il copia incolla (ho anche tradotto il codice dalla mia lingua madre in inglese per essere più facile da leggere). bene ... –
C'è anche questo, non sono sicuro se l'errore di copia come detto sopra: 'auctionID: $ ('# auctionID) .val()' spazio dopo '#' e manca la chiusura ''' dopo 'auctionID'. –