У меня есть догадка, что вы просто используете строковое значение для опции source
и предоставляете ему URL.Вы правы относительно того, что виджет прерывает запросы AJAX, если он выполняется. Проверьте этот фрагмент из исходного кода виджета:
url = this.options.source;
this.source = function(request, response) {
if (self.xhr) {
self.xhr.abort(); // <-- Problematic line.
}
self.xhr = $.ajax({
url: url,
data: request,
dataType: "json",
autocompleteRequest: ++requestIndex,
success: function(data, status) {
if (this.autocompleteRequest === requestIndex) {
response(data);
}
},
error: function() {
if (this.autocompleteRequest === requestIndex) {
response([]);
}
}
});
}
Если вы передаете строку в параметр source
, вы можете легко заменить ее функцией, выполняющей AJAX.вызовите вручную (и чтобы вы не прерывали запрос):
source: function (request, response) {
$.ajax({
url: "your_url",
data: request.term,
dataType: "json",
success: function(data, status) {
response(data);
}
});
}
(не проверено, но должно направить вас в нужном направлении)