Uso el método .each()
para ASP.NET WebMethod
llamadas que devuelven cadenas JSON. En este ejemplo, se rellena un cuadro de lista con los valores devueltos de la llamada 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 ha incorporado un serializador JSON que convierte automagicamente una clase en la cadena JSON que aparece en la parte inferior de esta enviar.Aquí es una clase de ejemplo que puede ser devuelto por el WebMethod
:
public class Tuple
{
public string Text;
public int Value;
public Tuple(string text, int val)
{
Text = text;
Value = val;
}
}
Y el WebMethod
sí:
[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;
}
Cuando se especifica dataType: "json"
en las opciones de jQuery Ajax, la cadena se convierte automáticamente en un Javascript objeto, por lo que simplemente puede escribir this.Text
o this.Value
para obtener los datos.
Aquí es el JSON resultante volvió de la WebMethod
arriba:
{"d":[{"Value":1,"Text":"First option"},{"Value":2,"Text":"Second option"}]}
Nota: la data.d
parámetro (y del mismo modo el primer valor visto en la cadena JSON) se explica here.
cada uno puede ser muy importante cuando crea plugins, en cualquier lugar donde necesite trabajar en cada elemento, el selector especifica dónde los manipuladores incorporados no permiten ... también 'esto' se refiere a un elemento html puro, $ (este) es el elemento envuelto en un conjunto jquery, que le permite llamar a los métodos jquery. – meandmycode
@meandmycode: esto se refiere al elemento html puro o al objeto DOM puro de la selección? – RedWolves