<script type="text/javascript">
        $(function () {            var buildsel = function (str, sel) {
                alert("wang tian qiao")
                alert(str);            }            var ajax = function (parentid, classid) {
                var ajaxdata;
                var MenuIArr, MenuClass;
                MenuIArr = new Array();
                MenuClass = 4;
                MenuIArr[1] = "sel1";
                MenuIArr[2] = "sel2";
                MenuIArr[3] = "sel3";
                MenuIArr[4] = "sel4";                $.ajax({
                    type: "GET",
                    url: "display.aspx",                    dataType: "text",
                    data: { "parentid": parentid },                    success: function (data, textStatus) {
                        $("#a1").html(data);
                        ajaxdata = data;
                         alert(ajaxdata)
                    }

                });
                
              buildsel(ajaxdata, $("#" + MenuIArr[classid + 1]));            }            $("#sel1").change(function () {
                var parentid = $(this).val();
                ajax(parentid, 1);
            })
            $("#loading").ajaxStart(function () {
                $(this).show();
            });
            $("#loading").ajaxStop(function () {
                $(this).hide();
            });        })    </script>
我的问题是,当我调用 ajax这个函数时,然后再这个函数中调用buildsel(ajaxdata, $("#" + MenuIArr[classid + 1]));
  结果,先运行buildsel这个函数,而$.ahax()中的successed却在buildsel后运行,我觉得很奇怪,怎么没按顺序运行,因为我想先运行ajax中的success,然后再运行buildsel,请高手帮下忙,谢谢

解决方案 »

  1.   

    data: { "parentid": parentid },  success: function (data, textStatus) {
      buildsel(ajaxdata, $("#" + MenuIArr[classid + 1]));
    }
    这样,因为异步是无需的,去异步的时候不会停止当前的操作,异步原理你应该懂的吧。你把你想在异步成功后做的事放在异步成功后的回掉函数里就可以了。
      

  2.   

    默认是异步,也可以改成同步的。asyn:false;
    这个在jquery里面默认是true的。祝你成功。