Używam metody .each()
dla wywołań ASP.NET WebMethod
, które zwracają ciągi JSON. W tym przykładzie, że zapełnia listbox z wartości zwracanych z wywołania 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 ma wbudowany JSON serializatora że automagicznie przekształca klasę w ciąg JSON widać w dolnej części tego stanowisko.Oto klasa przykład, który może być zwrócony przez WebMethod
:
public class Tuple
{
public string Text;
public int Value;
public Tuple(string text, int val)
{
Text = text;
Value = val;
}
}
A sama WebMethod
:
[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;
}
Po określeniu dataType: "json"
w opcjach jQuery Ajax, łańcuch jest automatycznie przekształcona w JavaScript obiekt, możesz po prostu wpisać this.Text
lub this.Value
, aby uzyskać dane.
Oto otrzymany JSON zwrócony z powyższego WebMethod
:
{"d":[{"Value":1,"Text":"First option"},{"Value":2,"Text":"Second option"}]}
Uwaga:data.d
parametrów (i podobnie pierwsza wartość widać na sznurkiem JSON) wyjaśniono here.
każda może być bardzo ważna podczas tworzenia wtyczek, wszędzie tam, gdzie trzeba pracować nad każdym elementem, który selektor określa, gdzie wbudowane manipulatory nie pozwalają. Również "to" odnosi się do czystego elementu html, $ (this) to element zawarty w zestawie jquery, który pozwala mu wywoływać metody jquery. – meandmycode
@meandmycode: odnosi się to do czystego elementu html lub czystego obiektu DOM z zaznaczenia? – RedWolves