¿Cómo puedo enviar un objeto JSON a un método web usando jQuery?¿Enviar JSON a webmethod?
Respuesta
Por favor, consulte el artículo this de Dave Ward. Es un tutorial completo sobre cómo hacer esto. También encontrarás allí otras cosas geniales de jquery/ASP.net.
EDIT: - de Dave está llamando método sin argumentos, se puede reemplazar vacío datos propiedad con datos reales que desea enviar:
$.ajax({
type: "POST",
url: "Default.aspx/GetDate",
data: "{'name':'tiger1','hobbies':['reading','music']}",//PUT DATA HERE
contentType: "application/json; charset=utf-8",
dataType: "json",
Se necesitaría para publicar usando Ajax y aceptar la cadena entrante en el webmethod. Entonces necesitaría usar el deserializador de JavaScript para convertirlo en un objeto del lado del servidor.
Creo que está preguntando cómo convertir el objeto de JavaScript en una cadena JSON para enviarlo a dicho webmethod. – ceejayoz
webMethods esperan que contiene JSON cadena que se analiza en el lado del servidor, utilizo la función JSON.stringify
para convertir un parámetros objeto de cadena, y enviar los datos, tengo una función como esta:
jQuery.executePageMethod = function(location, methodName, methodArguments,
onSuccess, onFail) {
this.ajax({
type: "POST",
url: location + "/" + methodName,
data: JSON.stringify(methodArguments), // convert the arguments to string
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data, status) {
var jsonData = JSON.parse(data.d);
onSuccess(jsonData, status);
},
fail: onFail
});
};
Le recomiendo que incluya el analizador json2.js en sus páginas, para tener la función JSON.stringify entre navegadores disponibles.
+1 - buena envoltura –
Las soluciones más convenientes que he visto simplifican esto al usar la biblioteca the open-source JSON2.js para analizar y "codificar" datos de objetos complejos.
Estos dos excelentes artículos entrar en detalles:
Using complex types to make calling services less… complex por Dave Ward.
JavaScript Arrays via JQuery Ajax to an Asp.Net WebMethod por Chris Brandsma.
El segundo artículo puede ser especialmente relevante para usted, a pesar de que llama a un servicio de método web con la siguiente firma ...
public void SendValues(List<string> list)
... demuestra cómo utilizar la biblioteca JSON2.js para representar un List<string>
en javascript (utilizando jQuery, este ejemplo se toma directamente del segundo artículo):
var list = ["a", "b", "c", "d"]; var jsonText = JSON.stringify({ list: list }); // The 'list' is posted like this $.ajax({ type: "POST", url: "WebService1.asmx/SendValues", data: jsonText, contentType: "application/json; charset=utf-8", dataType: "json", success: function() { alert("it worked"); }, failure: function() { alert("Uh oh"); } });
sólo tiene que utilizar su URL WebMethod en lugar del servicio de Web.
Otra biblioteca que puede usar es jquery-json
library. Una vez incluido:
var json = $.toJSON(your_object);
Ooh, gracias por esto. La versión minificada es ~ 2k, y se integra bien con jQuery (obviamente), lo cual es bueno si ya lo está usando (que yo soy). –
JSON.stringify sí ayuda, pero:
no es multi-navegador echar un vistazo aquí: http://www.sitepoint.com/blogs/2009/08/19/javascript-json-serialization/#
para el navegador incorporado funciones - todos los navegadores tendrá sus problemas. Si utiliza la serialización por encima Tendrá que:
- eliminar los saltos de línea con la expresión regular en cadenas
- cuidar aproximadamente "en cadenas
Código de ejemplo está aquí:
var dataString = JSON.stringify({
contractName: contractName,
contractNumber: contractNumber
});
$.ajax({
type: "POST",
url: "CreateQuote.aspx/GetCallHistory",
data: dataString,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
alert(result.CallHistoryDescription);
OpenLightBox('divDelete');
}
});
[System.Web.Services.WebMethod]
public static object GetCallHistory(string contractName, string contractNumber)
{
return new
{
CallHistoryDescription = "Nalan"
};
}
¿Es obligatorio pasar contractName primero y luego contractNumber mientras se crea JSON, porque a veces no estoy seguro de qué parámetro de secuencia vendrá, debido a los scripts dinámicos del lado del cliente –
- 1. enviando objeto JSON con éxito a asp.net WebMethod, usando jQuery
- 2. ASP.NET WebMethod Devuelve JSON envuelto entre comillas
- 3. WebMethod devuelve valores en formato JSON
- 4. Accediendo a webmethod con jquery
- 5. Llamar a un WebMethod usando jQueryAjax "GET"
- 6. Enviar json a la acción de MVC3
- 7. Enviar datos de Python a Javascript (JSON)
- 8. ASP.NET WebMethod con jQuery json, ¿hay un límite de tamaño?
- 9. WebMethod no se llama
- 10. Enviar datos JSON a través de JQuery ajax.post a PHP
- 11. Llamar a un 'WebMethod' con jQuery en ASP.NET WebForms
- 12. NSURLConnection JSON Enviar al servidor
- 13. enviar objeto json con httparty
- 14. Enviar datos JSON con jQuery
- 15. Pasando el parámetro a WebMethod con jQuery Ajax
- 16. Uso de JQuery para llamar a un WebMethod
- 17. Cómo pasar un valor de DateTime a un WebMethod (ASMX)
- 18. JQuery llamada ajax a httpget webmethod (C#) no funciona
- 19. ¿Cómo puedo acceder a la sesión en un webmethod?
- 20. Enviar JQuery JSON a WCF REST utilizando la fecha
- 21. Enviar datos JSON a PHP utilizando XMLHttpRequest sin jQuery
- 22. Enviar archivos a una API JSON de Rails
- 23. ¿Puedes enviar JSON a través de una url?
- 24. Enviar datos de Android a servidor con datos JSON
- 25. ¿Cómo enviar un formulario con AJAX/JSON?
- 26. cómo enviar el formulario como objeto JSON
- 27. Validador personalizado de ASP.NET + WebMethod + jQuery
- 28. ¿Cómo puedo enviar datos JSON al servidor
- 29. Convertir matriz a JSON
- 30. Llamando al archivo webmethod ina aspx.cs usando jquery ajax
+1 - Creo que este tema y ese artículo en particular seguirán apareciendo durante un tiempo :) –
Sí @Russ Dave ha mostrado la luz a no sé cuántos desarrolladores. – TheVillageIdiot
¿Estás seguro de que la matriz de pasatiempos se aprobará como lo esperas? –