2010-08-22 33 views
186

Tôi đang sử dụng phép thuật của jQuery.ajax(settings).

Tuy nhiên, tôi tự hỏi liệu có ai đã chơi với cài đặt hết thời gian chờ không?

Tôi biết về cơ bản là để ra lệnh cho giờ địa phương yêu cầu, nhưng nó có thể kích hoạt bất cứ điều gì nếu hết thời gian chờ không? Hay nó đơn giản ngừng lắng nghe một phản ứng?

Đọc trang web jQuery, tôi có thể thấy không có đối số nào được truyền, do đó, nó có vẻ giống như một cài đặt đơn giản với một khả năng. Mà là tốt.

Nhưng, tôi muốn kích hoạt cảnh báo hoặc chức năng nào đó nếu hết thời gian chờ. Tôi có thể thấy rằng cài đặt lỗi không được kích hoạt, trong trường hợp này.

Dưới đây là đoạn mã của tôi:

$("form#testform").submit(function(){ 

var allFormValues = $("form#testform").serialize(); 

    $.ajax({ 
    cache:false, 
    timeout:8000, // I chose 8 secs for kicks 
    type:"POST", 
    url:"someurl.php", 
    data:allFormValues, 
    error:function(){ alert("some error occurred") }, 
    success:function(response){ alert(response); } 
    }); 

}); 

Có ai biết làm thế nào để làm việc nhiều hơn với thời gian chờ?

Trả lời

325

Nếu trình xử lý sự kiện lỗi của bạn nhận ba đối số (xmlhttprequest, textstatus và tin nhắn) khi hết thời gian chờ, trạng thái arg sẽ là 'timeout'.

mỗi sự jQuery documentation:

Giá trị có thể cho số thứ hai (bên cạnh null) là "timeout", "lỗi" , "notmodified" và "parsererror".

Bạn có thể xử lý lỗi của mình cho phù hợp sau đó.

Tôi đã tạo điều này fiddle để minh họa điều này.

$.ajax({ 
    url: "/ajax_json_echo/", 
    type: "GET", 
    dataType: "json", 
    timeout: 1000, 
    success: function(response) { alert(response); }, 
    error: function(xmlhttprequest, textstatus, message) { 
     if(textstatus==="timeout") { 
      alert("got timeout"); 
     } else { 
      alert(textstatus); 
     } 
    } 
});​ 

Với jsFiddle, bạn có thể kiểm tra cuộc gọi ajax - nó sẽ chờ 2 giây trước khi trả lời. Tôi đặt các thiết lập thời gian chờ tại 1 giây, do đó, nó nên lỗi ra và trả lại một textstatus của 'timeout' để xử lý lỗi.

Hy vọng điều này sẽ hữu ích!

+2

Rất vui khi nó hoạt động! Vâng, họ loại ẩn các giá trị trạng thái đó trong tài liệu. –

+93

Chúng ẩn rất nhiều trong tài liệu. – Aaron

+0

Tại sao 2 giây? Ví dụ của bạn hiển thị rõ ràng 1000 (mili giây) –

Các vấn đề liên quan