2016-05-13 45 views
7

Tworzę projekt mvc .net, w którym mam wniosek jquery ajax jest następującysposobu zwracania wielu list z akcji kontrolera do sukcesu ajax wywołanie funkcji tylnym

$.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."); 
    } 
}); 

który nazywamy następujące działania kontroler

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 }; 
    } 

kod działa poprawnie. akcja kontrolera wysyła dane w allUser do funkcji zwrotnej.

ale co potrzebne jest, że chcę, aby wysłać zarówno dane w alluser i allUser1 do funkcji sukcesu wywołania ajax

+0

pokazać swój kod kontrolera –

+1

jeden minut istnieje jakiś problem podczas edycji – rakshi

+0

co z 'pre' tag z twoim JS? – evolutionxbox

Odpowiedz

1

Chciałbym utworzyć klasę, która ma 2 właściwości

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

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

Teraz można powrócić do obiektu klasy z powrotem do JSON

5

Wyobrażam chcesz zachować list oddzielone. Zawiń je w obiekt.

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

Można uzyskać do nich dostęp w swoim JS tak:

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

nawet ty możesz napisać funkcję sukcesu as- success: function (data) {loadData (data.allUser); loadData (data.allUser1);} –

3

Po prostu trzeba zmodyfikować klauzuli Where więc nie potrzebne są dwie różne listy dla użytkowników. Spróbuj tego w swojej metodzie 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 zawiera teraz wszystkie żądane dane.

+0

, ale potrzebuję każdej listy jako osobnej podziękowania. – rakshi