簡體   English   中英

如何將多個列表從控制器動作返回到ajax成功回調函數

[英]how to return the multiple lists from controller action to ajax success call back function

我正在創建一個mvc .net項目,其中我有jquery ajax請求如下

$.ajax({
        url: "@Url.Action("getdata", "SeatPlans")",
        data: { seat_plane_id : 17},
    type: "POST",
    dataType: "json",
    success: function (data) {
        loadData(data);
    },
    error: function () {
        alert("Failed! Please try again.");
    }
});

它調用以下控制器動作

public JsonResult getdata(int seat_plane_id)
    {
        int lid = seat_plane_id;
        List<SeatPlans> allUser = new List<SeatPlans>();
        allUser = db.SEATPLAN.Where(d => d.layout_id == lid).ToList();
        lid++;
        List<SeatPlans> allUser1 = new List<SeatPlans>();
        allUser1 = db.SEATPLAN.Where(d => d.layout_id == lid).ToList();

        return new JsonResult { Data = allUser,JsonRequestBehavior = JsonRequestBehavior.AllowGet };
    }

代碼工作正常。 控制器動作將allUser中的數據發送給回調函數。

但我需要的是,我想將alluser和allUser1中的數據發送到ajax調用的成功函數

我想你想要將列表分開。 將它們包裹在一個物體中。

var data = new { allUser = allUser , allUser1 = allUser1 }; 
return Json(yourObject, JsonRequestBehavior.AllowGet);

您可以在JS中訪問它們,如下所示:

success: function (data) {
   var allUser = data[0];
   var allUser1 = data[1];
   //use the data as you see fit.
   loadData(allUser);
   loadData(allUser1 );
},

您只需修改Where子句,這樣就不需要為用戶提供兩個不同的列表。 在你的getdata方法中試試這個:

public JsonResult getdata(int seat_plane_id)
{
    int lid = seat_plane_id;
    List<SeatPlans> allUser = new List<SeatPlans>();
    allUser = db.SEATPLAN.Where(d => d.layout_id == lid || d.layout_id == (lid+1)).ToList();

    return new JsonResult { Data = allUser,JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}

allUser現在包含所有需要的數據。

我會創建一個具有2個屬性的類

int lid = seat_plane_id;
List<List<SeatPlans>> listOfSeatPlans (a collection of collections)

List<List<SeatPlans>> list = new ...
list.Add(allUser);
list.Add(someUsers);

現在您可以將類對象返回給JSON

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM