Порядок ajax не соответствует порядку выбора с помощью async: true
У меня есть этот код, который вызывается в событии onChange
function group_changed(obj)
{
$.ajaxSetup({async:false});
$.post("/medilab/personnel/groups/getGroupRightsAjax",
{ 'group.id': obj.options[obj.selectedIndex].value },
function(data){
$("#div_rights").html(data);
}
);
}
Это отлично работает, но если я устанавливаю async: true иногда результат не соответствует выбранному...
Я предполагаю, что это происходит потому, что некоторые запросы потеряны или ответы не приходят в порядок.
Любая идея, что делать, чтобы сохранить асинхронность?
Ответы
Ответ 1
Есть несколько плагинов для jQuery, которые поддерживают очередность и упорядочивание запросов ajax. Джон Ресиг написал Ajax Queue. Из описания плагина:
Ajax Queue - это плагин, который помогает управлять условиями гонки Ajax. когда несколько запросов Ajax выполняются в Быстрая последовательность, результаты могут быть вернулся из строя. Это может вызвать странное поведение в вашем приложении.
Это звучит так, как будто это может быть то, что вам нужно, также должно быть доступно несколько разных плагинов, которые выполняют одно и то же действие (при условии упорядочения запросов ajax). Ajax Manager выглядит более актуальным. Просмотрите некоторые из плагинов, вы можете найти что-то, что уже делает то, что вы хотите выполнить, экономя ваше время.
Ответ 2
попробуйте это, это может быть лучшее решение.
$.ajax
({
type:'post',
data:'',
dataType: 'html',
url: '',
success: function(data) {
alert('data');
},
error: function() {
alert("Error");
}
});
Ответ 3
Менеджеры - это решение, но я исправил свою проблему, используя abort()!