¡Sé que hay más hilos sobre esto pero no me ayudan y me estoy volviendo loco aquí!Pasar parámetros en una llamada jQuery ajax a un web.thod de ASP.NET
Quiero pasar algunos parámetros en un método web usando jQuery Ajax.
var paramList = '';
for(i = 0; i < IDList.length; i++){
if (paramList.length > 0) paramList += ',';
paramList += '"' + 'id' + '":"' + IDList[i].value + '"';
}
paramList = '{' + paramList + '}';
var jsonParams = JSON.stringify(paramList);
$.ajax({
type: "POST",
url: "editactivity.aspx/UpdateSequenceNumber",
data: jsonParams,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
}
});
En la llamada ajax, si pongo los datos a paramlist me sale el error: "no válida llamada de servicio web, valor que falta para el parámetro: \ u0027a \ u0027."
Si pongo los datos a jsonParams me sale el error:
"Cannot convert object of type \u0027System.String\u0027 to type \u0027System.Collections.Generic.IDictionary`2[System.String,System.Object]\u0027"
Si escribo a cabo paramList
, que está en un formato JSON correcta como {"id":"140", "id":"138"}
Si escribo a cabo jsonParams
, está en una incorrecta formato como "{\"id\":\"140\",\"id\":\"138\"}"
El método web: (no hace mucho todavía ..)
[System.Web.Services.WebMethod]
public static string UpdateSequenceNumber(string a, string b)
{
return a+b;
}
¿Qué estoy haciendo mal? Parece que no puede hacer bien este JSON.
ACTUALIZACIÓN:
Después de un poco de ayuda desde la primera respuesta que ahora mando {"id":["138","140"]}
en la petición AJAX.
El método web ahora toma una cadena llamada id
como el parámetro en su lugar.
[System.Web.Services.WebMethod]
public static string UpdateSequenceNumber(string id)
{
return id;
}
ahora consigo el nuevo error:
"Type \u0027System.Array\u0027 is not supported for deserialization of an array."
Gracias, no lo sé. Ahora después de hacerlo var c = JSON.stringify ({"id": list}); Obtengo: {"id": ["138", "140"]} que se ve bien. Pero sé que recibo un nuevo error al hacer la solicitud de ajax: "Type \ u0027System.Array \ u0027 no se admite para la deserialización de una matriz". – larschanders
No sabía que podemos usar el tipo de lista como tipo de datos C# con webmethod, gracias;) –
Me alegro de que podamos ayudarnos unos a otros :) – larschanders