如何进行多个ajax调用?

时间:2014-11-20 05:49:18

标签: jquery asp.net-mvc asp.net-mvc-4

我有5个下拉框,如(国家,州,区,镇,街道) 当我选择国家时,我正在加载属于该国家的(州,区,镇,街道)。

我的问题是,现在我正在为此进行4次单独的ajax调用。

$('#Country').change(function(){
var procemessage = "<option value='0'> Please wait...</option>";
    $("#State").html(procemessage).show();
    var CountryId = $(this).val();
    $.ajax({
        url: '../Home/LoadStateForCountry?CountryId=' + CountryId,
        success: function (result) {
            var markup = "";
            if (result.length < 1) {
                markup = "<option value='0'>--Nothing to Select--</option>";
            } else {
                data = result;
                markup = "<option value='0'>--Select--</option>";
                for (var x = 0; x < data.length; x++) {
                    markup += "<option value=" + data[x].ValueId + ">" + data[x].DisplayText + "</option>";
                }
            }
            $("#State").html(markup).show();
        },
    error: function (result) { }
});
}); 

$('#Country').change(function(){
//Load district
}); 

$('#Country').change(function(){
//Load town
}); 

$('#Country').change(funstion(){
//Load street
}); 

这样做是对的。或者无论如何都要立即打电话 我是MVC的新手。所以请指导我。

1 个答案:

答案 0 :(得分:0)

您只需使用ajax调用即可加载国家/地区状态

$('#Country').change(funstion(){
BindStateDropDown();
BindDistrictDropDown();
BindTownDropDown();
BindStreetDropDown();
}); 

或者你可以做什么在回拨一个ajax电话时你可以再打一次ajax电话 假设在回调LoadState时你可以进行另一个ajax调用来加载District。

$.get("URLToLoadState",{CountryId:CountryId <Just a parameter>},function(data){
        BindDistrict()
});

在学区回电话,你可以去镇,然后去街。

或其他选项是,

您可以为所有这些实体创建包装类,例如

public class LocationModel
{
  public List<StateModel> StateList{get;set;}
  public List<DistrictModel> StateList{get;set;}
  public List<TownModel> StateList{get;set;}
  public List<StreetModel> StateList{get;set;}
}

在更改国家/地区时,您可以通过一次通话获得所有收藏

$('#Country').change(funstion(){
$.get("UrlToLoadLocations",{CountryId:CountryId},function(data){
BindStateDropDown(data.StateList);
BindStateDropDown(data.DistrictList);
BindStateDropDown(data.TownList);
BindStateDropDown(data.StreetList);
});

});