Tôi đang mã hóa trang web đấu giá trong Laravel 5.0 mô phỏng các bản cập nhật thời gian thực bằng cách sử dụng một con trỏ AJAX được thực thi sau mỗi 5 giây. Vấn đề là máy chủ của tôi trả về trạng thái HTTP 401 không thường xuyên.Lỗi Laravel và AJAX lẻ tẻ 401 trong một poller
tuyến đường của tôi là xây dựng như thế này:
Route::post(auction/live/update, '[email protected]');
điều khiển của tôi là như thế này:
public function ajaxSendUpdate() {
// Business logic: queries database, couple of Ifs, etc…
$data = array('success' => true, 'otherStuff' => $myData);
return Response::json($data);
}
Cuối cùng poller của tôi được thiết lập như thế này:
// 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);
Mã này chạy tốt khoảng 95% số lần. Tuy nhiên nó có thể phá vỡ với 2 kết quả khác nhau:
1) Máy chủ trả lời lỗi 401 sau một thời gian và không bao giờ phục hồi. Trong trường hợp này, chúng ta cần đăng nhập lại. Sau khi đăng nhập, mọi thứ diễn ra tốt đẹp và kết quả này không bao giờ xảy ra nữa.
2) Máy chủ phản hồi với số lượng không thường xuyên 401 nhưng khôi phục trong yêu cầu thăm dò tiếp theo (hoặc sau một vài).
Tôi đang sử dụng Laravel 5.0 và phiên bản cập nhật của Xampp trên Windows. Lỗi này dễ dàng được sao chép bằng WAMP trên Windows. Không được thử nghiệm trong Linux cũng như OSX. Tôi đã đọc this và this và các loại chủ đề trong laracasts.com và các diễn đàn khác nhưng tôi không thể giải quyết vấn đề ...
Bạn có lỗi cú pháp. url: "{!!url ('đấu giá/sống/cập nhật') !!} ", – kotapeter
Bạn đã đúng nhưng đó là vấn đề với việc dán bản sao (tôi cũng đã dịch mã từ ngôn ngữ mẹ đẻ sang tiếng Anh để dễ đọc hơn). tốt ... –
Có điều này là tốt, không chắc chắn nếu lỗi sao chép như đã nêu ở trên: 'auctionID: $ ('# auctionID) .val()' không gian sau '#' và thiếu đóng ''' sau 'auctionID'. –