tipo por parámetros parametros net mvc llamar lista how enviar ejemplo desde datos controlador asp asp.net jquery ajax

asp.net - por - Pasar múltiples parámetros a jQuery llamada ajax



jquery ajax mvc asp (10)

Tengo el siguiente código jquery para llamar a un webmethod en una página aspx

$.ajax({ type: "POST", url: "popup.aspx/GetJewellerAssets", contentType: "application/json; charset=utf-8", data: ''{"jewellerId":'' + filter + ''}'', dataType: "json", success: AjaxSucceeded, error: AjaxFailed });

y aquí está la firma del método web

[WebMethod] public static string GetJewellerAssets(int jewellerId) {

Esto funciona bien

Pero ahora necesito obtener dos parámetros pasados ​​al método web

el nuevo método web se ve así

[WebMethod] public static string GetJewellerAssets(int jewellerId, string locale) { }

¿Cómo cambio el código del cliente para llamar con éxito a esta nueva firma de método?

EDITAR:

Las siguientes 2 sintaxis funcionaron

data: ''{ "jewellerId":'' + filter + '', "locale":"en" }'',

y

data: JSON.stringify({ jewellerId: filter, locale: locale }),

donde el filtro y la configuración regional son variables locales


¿Alguien más ha notado que la cadena / objeto json no es válida en todas las respuestas, excepto en la de David Hedlund? :)

Los objetos JSON deben formatearse de la siguiente manera: {"clave": ("valor" | 0 | falso)}. Además, escribirlo como una cadena requiere mucho menos que codificar el objeto ...


NO use el siguiente método para enviar los datos usando una llamada ajax

data: ''{"jewellerId":"'' + filter + ''","locale":"'' + locale + ''"}''

Si por error el usuario ingresa un carácter especial como comilla simple o comillas dobles, la llamada ajax falla debido a una cadena incorrecta.

Use el método a continuación para llamar al servicio web sin ningún problema

var parameter = { jewellerId: filter, locale : locale }; data: JSON.stringify(parameter)

En el parámetro anterior se encuentra el nombre del objeto javascript y lo escribe en un string al pasarlo al atributo de datos de la llamada ajax.


No use la concatenación de cadenas para pasar parámetros, solo use un hash de datos:

$.ajax({ type: ''POST'', url: ''popup.aspx/GetJewellerAssets'', contentType: ''application/json; charset=utf-8'', data: { jewellerId: filter, locale: ''en-US'' }, dataType: ''json'', success: AjaxSucceeded, error: AjaxFailed });

ACTUALIZAR:

Tal como lo sugiere @Alex en la sección de comentarios, un ASP.NET PageMethod espera que los parámetros se codifiquen en JSON en la solicitud, por lo que JSON.stringify debe aplicar al hash de datos:

$.ajax({ type: ''POST'', url: ''popup.aspx/GetJewellerAssets'', contentType: ''application/json; charset=utf-8'', data: JSON.stringify({ jewellerId: filter, locale: ''en-US'' }), dataType: ''json'', success: AjaxSucceeded, error: AjaxFailed });


Pasé con éxito varios parámetros usando json

data: "{''RecomendeeName'':''" + document.getElementById(''txtSearch'').value + "''," + "''tempdata'':''" +"myvalue" + "''}",


Se trata de datos que pasas; tiene una cadena con el formato adecuado. Si está pasando datos vacíos, entonces los datos: {} funcionarán. Sin embargo, con múltiples parámetros, debe estar formateado adecuadamente, por ejemplo

var dataParam = ''{'' + ''"data1Variable": "'' + data1Value+ ''", "data2Variable": "'' + data2Value+ ''"'' + ''}'';

....

datos: dataParam

...

La mejor forma de entender es tener un controlador de errores con el parámetro de mensaje adecuado, para conocer los errores detallados.


Solo para agregar [Esta línea funciona perfectamente en Asp.net y busca campos de control web en jason Ej .: <% Fieldname%>]

data: "{LocationName:''" + document.getElementById(''<%=txtLocationName.ClientID%>'').value + "'',AreaID:''" + document.getElementById(''<%=DropDownArea.ClientID%>'').value + "''}",


simplemente agregue tantas propiedades como necesite al objeto de datos.

$.ajax({ type: "POST", url: "popup.aspx/GetJewellerAssets", contentType: "application/json; charset=utf-8", data: {jewellerId: filter , foo: "bar", other: "otherValue"}, dataType: "json", success: AjaxSucceeded, error: AjaxFailed });


var valueOfTextBox=$("#result").val(); var valueOfSelectedCheckbox=$("#radio:checked").val(); $.ajax({ url: ''result.php'', type: ''POST'', data: { forValue: valueOfTextBox, check : valueOfSelectedCheckbox } , beforeSend: function() { $("#loader").show(); }, success: function (response) { $("#loader").hide(); $("#answer").text(response); }, error: function () { //$("#loader").show(); alert("error occured"); } });


$.ajax({ type: ''POST'', url: ''popup.aspx/GetJewellerAssets'', data: "jewellerId=" + filter+ "&locale=" + locale, success: AjaxSucceeded, error: AjaxFailed });


data: ''{"jewellerId":"'' + filter + ''","locale":"'' + locale + ''"}'',