Tôi sử dụng phương thức .each()
cho các cuộc gọi ASP.NET WebMethod
trả về chuỗi JSON. Trong ví dụ này, nó populates một ListBox với các giá trị trở về từ cuộc gọi Ajax:
async: true,
type: "POST",
url: "Example.aspx/GetValues",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
var list = $('<select />');
$.each(data.d, function(){
var val = this.Value;
var text = this.Text;
list.append($('<option />').val(val).text(text));
});
$('#listbox').empty().append(list.find('option'));
},
ASP.NET có một built-in JSON serializer rằng Automagically chuyển đổi một lớp thành chuỗi JSON bạn nhìn thấy ở dưới cùng của này bài đăng.Dưới đây là một lớp ví dụ có thể được trả lại bởi WebMethod
:
public class Tuple
{
public string Text;
public int Value;
public Tuple(string text, int val)
{
Text = text;
Value = val;
}
}
Và WebMethod
bản thân:
[WebMethod]
public static List<Tuple> GetValues()
{
List<Tuple> options = new List<Tuple>();
options.Add(new Tuple("First option", 1));
options.Add(new Tuple("Second option", 2));
return options;
}
Khi bạn xác định dataType: "json"
trong các tùy chọn jQuery Ajax, chuỗi được tự động chuyển đổi thành một Javascript đối tượng, vì vậy bạn có thể chỉ cần nhập this.Text
hoặc this.Value
để nhận dữ liệu.
Dưới đây là kết quả JSON trở về từ các WebMethod
trên:
{"d":[{"Value":1,"Text":"First option"},{"Value":2,"Text":"Second option"}]}
Lưu ý: các data.d
tham số (và tương tự như vậy giá trị đầu tiên nhìn thấy trong chuỗi JSON) được giải thích here.
Nguồn
2009-04-06 19:54:07
mỗi cái có thể khá quan trọng khi bạn tạo plugin, bất cứ nơi nào bạn cần làm việc trên từng phần tử mà bộ chọn chỉ định nơi các trình xử lý được xây dựng không cho phép .. cũng 'this' là một phần tử html thuần túy, $ (this) là phần tử được bọc trong một bộ jquery, cho phép nó gọi các phương thức jquery. – meandmycode
@meandmycode: điều này đề cập đến phần tử html thuần túy hoặc đối tượng DOM thuần túy từ vùng chọn? – RedWolves