He echado un vistazo, y estoy tratando de encontrar una solución elegante para esto, y todavía tengo que encontrar una. Tengo un servicio web ASMX en .NET que estoy tratando de llamar que requiere parámetros.Envío con comillas simples usando jQuery, Ajax y JSON
estoy usando jQuery en el lado del cliente para llamar al servicio y mi código de jQuery es como la siguiente:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
url: "/Reviews/HotelReview.asmx/SubmitReview",
data: "{'name': '" + name + "', " +
"'info': '" info + "'}",
processData: true,
beforeSend: function() { startSubmit(); },
complete: function() { submitComplete(); },
error: function(xhr) { submitError(xhr); },
success: function(msg) { submitSuccess(msg.d); }
});
Funciona muy bien, excepto cuando sea nombre o información contienen el ' caracter, una comilla simple. Bastante simple, porque mi JSON define el final del valor del campo y es una cita simple. Cuando cualquiera de estos campos contiene una comilla simple, todo lo que obtengo es un "Error interno del servidor", pero una inspección posterior usando Fiddler me mostró los resultados (no me molestaré en publicarlos) indicando el problema de la cita única.
He puesto temporalmente algo en su lugar para eliminar las comillas simples en el lado del cliente y ponerlas de nuevo en el lado del servidor, pero esto está lejos de ser elegante. ¿Hay alguna forma más elegante de evitar estas comillas simples para que mi código pueda funcionar?
gran respuesta, gracias. Usé json.js y JSON.encode (myobject) en lugar de compilar una cadena. – Odd
En los navegadores que lo soportan (todos los navegadores de la versión actual) probablemente prefiera el objeto JSON nativo (http://blogs.msdn.com/ ie/archive/2008/09/10/native-json-in-ie8.aspx) si json.js no hace eso automáticamente. – EricLaw