JQUERY 如何让一个一个异步刷新的数据加载完成后再执行后边的方法。
比如我现在异步加载一个select,如何给select 赋值,很多时候在select数据没有加载完成的时候就执行了下边的赋值,这样就会出错,请问大家有什么好的办法解决吗?或者这个时候如何使用回调函数?

解决方案 »

  1.   

    把给select赋值的代码放到回调函数success中执行
      

  2.   

    我是调用一个异步刷新的方法后,再执行一段jquery赋值,但是下面的赋值优先于上边的方法执行了,就是上边的方法没执行完下边的代码就执行了如何解决呢
      

  3.   

    这个是省市区联动的,市区的赋值放在select里,后面还有一个区的赋值这样程序的执行顺序还是有问题
      

  4.   


    $('#province').change(function(){
    $.ajax({
    ...
    success:function(){
    $('#city').html('<option>xxx</option>');
    }
    })
    });
    $('#city').change(function(){
    $.ajax({
    ...
    success:function(){
    $('#area').html('<option>xxx</option>');
    }
    });
    });
      

  5.   

    ajax请求下拉列表数据源,回调函数中赋初值,
    很简单的逻辑,
    建议写成一个组件,把获取省市区信息服务端接口作为参数,组件内部实现联动,还可以提供一个方法直接设置省市区的初值,方法内部处理好ajax逻辑就行了,这样会非常好用
      

  6.   

    你可以试试将ajax请求中的asyc这个属性设置成false可以用$.ajaxSetup({ asyc:false})(全局事件的方法,当然也可以在你的ajax里面单独设置); 虽然是异步刷新(异步获取数据)但是在页面上进行同步等待。这样页面就会先执行完ajax请求后才能执行后面的代码。ls的各位说的回调函数也是处理这个的这时候asyc的设置就不重要了,但是你必须正确捕捉到ajax的回调事件,可以在你做的ajax请求里面加上回调函数(callback) 如果难以找到可以用$.ajaxSucess 全局的方法获取(有点弊端,需要对与数据进行判断因为是全局的,如果当前页面ajax请求数不多也可以用),呵呵,希望对你有所帮助。