Порядок 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()!