2009-08-17 35 views
12

Hóa ra đây là một vật phẩm của một lỗi Firebug. Yêu cầu Ajax đã bị hủy, nhưng Firebug tiếp tục báo cáo nó là đang hoạt động. Chi tiết here.Hủy bỏ một jQuery getJSON XMLHttpRequest


Tôi đã chạy XMLHttpRequests và tôi cần phải có khả năng hủy bỏ chúng trong một số trường hợp nhất định.

tôi thiết lập các yêu cầu theo một cách bình thường:

ajax = $.getJSON(url + "?updates", function(data) { ...; }); 

Sau đó tôi muốn hủy bỏ yêu cầu này, có vẻ đơn giản:

ajax.abort(); 

Khi tôi nhìn vào Firebug tuy nhiên, tôi nhìn thấy nó vẫn đang chạy ...

Bảng điều khiển của tôi.log giá trị của ajax ngay trước khi tôi thử và hủy bỏ nó, nó xác nhận rằng giá trị của nó là và XMLHttpRequest (với readyState là 0).

Có các hạn chế về cách thức và thời điểm hủy() kích hoạt trên XMLHttpRequest không?

+0

Phiên bản FF nào? –

+0

Phiên bản này là Linux 3.0.13 –

Trả lời

2

Gọi hủy bỏ đặt lại đối tượng; xử lý sự kiện onreadystatechange bị loại bỏ và readyState được thay đổi thành 0 (uninitialized).

tôi không nghĩ rằng nó hủy yêu cầu, nó chỉ bỏ qua bất kỳ phản hồi nào (thao tác xử lý sự kiện) - nhưng tôi chưa thực sự thử nó.

nhưng nó sẽ vô cùng cho phép bạn sử dụng lại đối tượng - bất kể trình duyệt vẫn còn một số chuỗi hoạt động với yêu cầu cũ.

+1

Bạn đang trích dẫn ai? –

+0

Aah !. Vấn đề là tôi kết thúc với quá nhiều yêu cầu http và trình duyệt bị treo, vì vậy tôi cần phải chấm dứt nó ... –

+0

báo giá là từ docu javascript của Microsoft. Từ này tôi đoán nó rất phụ thuộc vào việc thực hiện trình duyệt chính xác những gì đang xảy ra.hầu hết các trình duyệt có thể sẽ cố gắng hoàn thành một cách duyên dáng - do đó các kết nối có thể vẫn còn trong một thời gian cho đến khi đóng cửa cuối cùng - nhưng đó chỉ là một phỏng đoán. – Niko

2

bạn có thể xem qua số JSONP-Plugin Với Plugin này, bạn có khả năng hủy yêu cầu theo cách thủ công. Ngoài ra hãy xem tại "a cautionary note" tại thư viện kỹ thuật của IBM:

Đầu tiên và quan trọng nhất, không có lỗi xử lý cho JSONP gọi. Nếu chèn tập lệnh động hoạt động, bạn sẽ được gọi; nếu không, không có gì xảy ra. Nó chỉ im lặng. Ví dụ, bạn không thể bắt lỗi 404 từ máy chủ. Bạn cũng không thể hủy hoặc khởi động lại yêu cầu.

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