ajax顺序与async:true的选择顺序不匹配

时间:2010-03-15 14:17:36

标签: jquery ajax

我有一个在

的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有时结果与选择不匹配... 我想这种情况正在发生,因为有些请求丢失了,或者响应没有按顺序排列。

知道如何保持异步?

3 个答案:

答案 0 :(得分:5)

有一些jQuery插件支持排队和排序ajax请求。 John Resig写了Ajax Queue。来自插件说明:

  

Ajax Queue是一个有用的插件   管理Ajax竞争条件。什么时候   发出多个Ajax请求   快速接班,结果可以   退回了故障。这可能会导致   你的应用程序中的奇怪行为。

听起来这可能就是你所需要的,还应该有几个不同的插件可以完成相同的事情(保持订单的ajax请求)。 Ajax Manager看起来更新。浏览一些插件,您可能会发现已经完成的任务,节省您的时间。

答案 1 :(得分:1)

试试这个,这可能是一个更好的解决方案。

$.ajax
({
    type:'post',
    data:'',
    dataType: 'html',
    url: '',
    success: function(data) {
        alert('data');
    },
    error: function()   {
       alert("Error");
    }
});

答案 2 :(得分:1)

经理是一个解决方案,但我使用abort()解决了我的问题!