De acuerdo con jQuery Ajax docs, serializa los datos en forma de una cadena de consulta al enviar solicitudes, pero la configuración processData:false
debería permitirme enviar JSON real en el cuerpo. Lamentablemente, estoy teniendo dificultades para determinar primero, si esto está sucediendo, y el segundo aspecto del objeto que se envía al servidor. Todo lo que sé es que el servidor no está analizando lo que estoy enviando.jQuery publicando json válido en el cuerpo de solicitud
Cuando se usa http client para publicar un objeto literal {someKey:'someData'}
, funciona. Pero al usar jQuery con data: {someKey:'someData'}
, falla. Desafortunadamente cuando analizo la solicitud en Safari, dice que la carga útil del mensaje es [object Object]
... genial ... y en Firefox la publicación está en blanco ...
Al registrar el contenido del cuerpo en Java, literalmente obtiene [object Object]
Entonces, ¿cómo se envía una información REAL JSON?
¿Alguien ha tenido experiencia con un servicio Java serializando datos JSON en el cuerpo de la solicitud, con la solicitud enviada desde jQuery?
Por cierto aquí es la solicitud $ .ajax completo:
$.ajax({
contentType: 'application/json',
data: {
"command": "on"
},
dataType: 'json',
success: function(data){
app.log("device control succeeded");
},
error: function(){
app.log("Device control failed");
},
processData: false,
type: 'POST',
url: '/devices/{device_id}/control'
});
así que ya no necesito el processData: false usando 'JSON.stringify()'? – brad
@brad: correcto, no importará después de hacer esto porque ya es * una cadena, y en ese caso [jQuery no lo procesará más] (https://github.com/jquery/jquery/blob/ 1.4.3/src/ajax.js # L207). –
funcionó como un encanto, muchas gracias! ¿Es cierto entonces que se espera que todos los cuerpos de solicitud sean cadenas que se analizan en el otro extremo? – brad