2012-01-31 15 views
30

En lugar de enviar una lista de pares clave/valor, necesito enviar una cadena JSON como el cuerpo de la solicitud POST.
Realizo esta solicitud POST usando la función $ .ajax de jQuery.
¿Cómo lo configuro correctamente?Cómo configurar el cuerpo sin procesar en jQuery Ajax?

Cuando digo cadena JSON, me refiero a algo así como: {action:'x',params:['a','b','c']}.

Esta es la forma en que yo usaría esta cadena JSON en PHP en el servidor:

var_dump(json_decode(file_get_contents('php://input'))); 

Resultados en:

stdClass Object 
    action = x 
    params = Array 
     (
    0 = a 
    1 = b 
    2 = c 
     ) 
+1

Ahora entiendo - que desea reemplazar de alguna manera en realidad el cuerpo de la petición xhr con una cadena JSON de su elección? No tengo idea aquí - con suerte un experto vendrá y dirá si esto es posible –

Respuesta

79

Probar:

$.ajax('url',{ 
    'data': JSON.stringify(yourJSONObject), //{action:'x',params:['a','b','c']} 
    'type': 'POST', 
    'processData': false, 
    'contentType': 'application/json' //typically 'application/x-www-form-urlencoded', but the service you are calling may expect 'text/json'... check with the service to see what they expect as content-type in the HTTP header. 
}); 

Espero que esto ayude,

Pete

+6

'contentType': 'application/json' en mi opinión. –

4

si no especificar la clave creo que va a publicar como el cuerpo sin la llave como

$.ajax({ 
data:JSON.stringify({action:'x',params:['a','b','c']}) 
}); 
Cuestiones relacionadas