級聯初始化-ajax

最近寫頁面,需要做 業務線 和 業務 的級聯組件,並在頁面打開就做好初始化。
原來用的方案是每個初始化的方法返回一個Boolean類型的值,在方法調用處,用while循環判斷是否幾個初始化的方法全部返回了值,但是這種方式會造成資源的浪費,後來就百度了一下,發現自己進入思維誤區了,ajax請求是異步的,改爲同步不就好了。。。。。。

【原方案】

$(function () {
   var flag1 = initBusinessLine();
   var flag2 = initBusiness();
   while(!flag1 || flag2){
   }
 }
 
function initBusinessLine() {
	$.get(url, function (data) {
		//ajax查詢
	}      
    return true;
}

function initBusiness() {
	$.get(url, function (data) {
		//ajax查詢
	}      
    return true;
}

【改後的方案】

只需在ajax請求體中設置: async: false

$(function () {
    initBusinessLine();
    initBusiness();
    $("#businessLineSelect").change(function () {
        initBusiness();
    });
});

function initBusinessLine() {
    $.ajax({
        type: 'POST',
        url: basePath + "/mapping/getAllBusinessLine.do",
        dataType: "json",
        async: false,
        success: function (data) {
            if (data.resultCode == '0000') {
                var businessLineList = data.data;
                var businessLineHtml = '';
                for (var i in businessLineList) {
                    businessLineHtml += '<option value="' + businessLineList[i] + '">' + businessLineList[i] + '</option>';
                }
                $("#businessLineSelect").html(businessLineHtml);
            } else {
                bootbox.alert(data.resultMsg);
            }
        }
    });
}

function initBusiness() {
    var businessLine = $("#businessLineSelect").val();
    $.ajax({
        type: 'POST',
        url: basePath + "/mapping/initBusiness?param=" + businessLine,
        dataType: "json",
        async: false,
        success: function (data) {
            if (data.resultCode == '0000') {
                var businessList = data.data;
                var businessHtml = '';
                ;
                for (var i in businessList) {
                    businessHtml += '<option value="' + businessList[i] + '">' + businessList[i] + '</option>';
                }
                $("#businessSelect").html(businessHtml);
            } else {
                bootbox.alert(data.resultMsg);
            }
        }
    });
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章