Cách return nhiều giá trị từ webservices
Code dưới webservices
JavaScriptSerializer js = new
JavaScriptSerializer();
return
js.Serialize(new
{
accounts = accounts,
schools = schools,
subjclass = subjclass
});
accounts : tên biến
accounts : giá trị
Code phía client
Cần phải parse chuổi json trả về để lấy được từng giá trị
success: function
(msg) {
var data = $.parseJSON(msg.d);
accounts = data.accounts;
}
Cách gửi 1 chuổi json xuống webservices
// ===================== CHUẨN BỊ DỮ
LIỆU GỬI XUỐNG SERVICES
=====================
// ĐỐI VỚI BÀI VÍ DỤ NÀY, MÌNH LỒNG TỚI 3 LỚP DỮ LIỆU NÊN HƠI LẰNG NHẰNG, NẾU KHÔNG MUỐN BẠN CÓ THỂ BỎ BỚT, DÙNG 1,2 HAY 10 LỚP CŨNG THẾ THÔI @@
// Dữ liệu gửi xuống là kiểu json chứa 2 đối tượng
programs và name.
// Trong đó programs là kiểu object (ko biết diễn tả, tạm
gọi là json con)
// Bên trong programs sẽ chứa các đối tượng lessons,
description
// Trong đó kiểu lessons lại là kiểu object (gọi json
con tiếp nhá @@)
// Bên trong lessons chứa lesson_id
//Nói lằng nhằng quá để dể hình dung đối tượng gửi xuống có dạng tổng quát như sau
/*
Object
{
name,
programs
{
object
{
description,
lessons
{
lesson_id,
lesson_id,
}
}
object
{
description,
lessons
{
lesson_id,
lesson_id,
}
}
}
}
*/
// Get dữ liệu name
var name = $("#name").val();
// Khai báo 1 mảng programs để chứa các giá trị con
var programs = [];
// Cấu trúc vòng lặp trong jquery để get giá trị, ở đây
ý nghĩa là lặp qua từng thẻ li trong thẻ cha có id là ulxyz
$('#ulxyz > li').each(function
(index, elem) {
// Khai báo 1 mảng lessons để chứa các giá trị con (giống
trên)
var lessons = [];
// Lại vòng lặp tiếp nha @@
$(this).children().find(".dragLesson").each(function (i, e) {
var lesson_id = $(this).children(".lesson_id").text();
// Gán giá trị con vào mảng
lessons.push(lesson_id);
});
var des = "abcxyz";
// Sử dụng 1 mảng tạm (temp) để lấy lấy các giá trị,
sau đó gán nó vào mảng cha
var temp = {lessons: lessons, description: des };
programs.push(temp);
})
// Rồi giờ chỉ việc gửi đi thôi @@
xuống dưới mình sẽ chỉ các bạn cách nhận nó sau
$.ajax({
type: 'POST',
url: 'Program.asmx/Program',
dataType:
'json',
contentType: 'application/json;
charset=utf-8',
data:
JSON.stringify({ programs: programs, name: name }),
success: function (s) {
}
});
// ===================== VÂNG VÀ BÂY GIỜ SẺ LÀ CÁCH NHẬN DỮ LIỆU =====================
Nói thì dài dòng, chứ thật ra nó đơn giản là ... gửi kiểu ji` thì nhận kiểu đó
public bool Program(List<Program_Data>
programs, string name)
{
}
Mình sử dụng List<Program_Data> programs để nhận dữ liệu gửi xuống (chú ý tên biến phải giống nhau nha, programs : programs)
Và tất nhiên các đối tượng chứa bên trong Program_Data cũng giống như dữ liệu gửi xuống
public class Program_Data
{
public int[] lessons;
public string
description;
}
Rồi hết @@