Tôi đoán bạn bắn những json request
qua một đối tượng XMLHttpRequest
hay nói cách khác, bạn đang sử dụng .ajax()
. Nói chung, bạn có thể hủy yêu cầu ajax bằng cách sử dụng .abort()
.
var xhr = $.ajax({});
// somewhere else
if(xhr)
xhr.abort();
từ .ajax()
trả về XHR
kiện ban đầu bạn có thể lưu trữ một nơi nào đó và hủy bỏ yêu cầu đó. Tất nhiên bạn sẽ phải tạo ra một số "yêu cầu logic" để xử lý công cụ này. Ví dụ:
var xhrmanager = function() {
var requests = [],
self = {};
self.create = function(params, cb){
if(typeof params === 'object') {// additional checks here
var xhr = $.ajax($.extend({
url: '/path/script.pl',
dataType: 'json',
type: 'GET',
success: function(data, status, req){
if(typeof cb === 'function')
cb.apply(this, [data]);
},
complete: function(req, status) {
var pos = $.inArray(req, requests);
if(pos > -1)
requests.splice(pos, 1)
}
}, params || {}));
}
};
self.clearAll = function(){
for(var i = 0, len = requests.length; i < len; i++){
requests[i].abort();
}
};
return self;
};
sử dụng như:
var json_requests = xhrmanager();
json_requests.create({
data: 'some=data'
}, function(data) {
// do something
});
json_requests.clearAll();