2012-01-31 13 views
30

Zamiast wysyłać listę par klucz/wartość, muszę wysłać ciąg JSON jako treść żądania POST.
Wykonuję to żądanie POST, używając funkcji $ .ajax jQuery.
Jak ustawić poprawnie?Jak ustawić surowy obiekt w Ajax jQuery?

Kiedy mówię ciąg JSON, mam na myśli coś takiego: {action:'x',params:['a','b','c']}.

ten sposób chciałbym używać ten ciąg JSON w PHP na serwerze:

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

Wyniki w:

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

Rozumiem teraz - chcesz jakoś faktycznie zastąpić ciało wniosek XHR sznurkiem json swojego wyboru? Nie mam tu pojęcia - mam nadzieję, że ekspert przyjdzie i powie, czy to jest możliwe. –

Odpowiedz

79

Spróbuj:

$.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. 
}); 

Nadzieja to pomaga,

Pete

+6

"contentType": "application/json" w mojej opinii. –

4

jeśli nie określić klucz myślę, że będzie pisać jako organ bez klucza jak

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