2012-12-19 18 views
35

Próbuje wysłać json. Oto moja funkcja:JQuery Post wysyła dane formularza, a nie JSON

var object = ... ; 

$.ajax({ 
     type: 'POST', 
     url: '<url>', 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     data: object 
    }); 

Ale ilekroć sprawdzić Chrome, zawsze wysyła go jako params zapytań:

Request Payload: 
startDate=Wed+Dec+19+2012+19%3A00%3A00+GMT-0500+(EST)&endDate=Thu+Dec+20+2012+19%3A00%3A00+GMT-0500+(EST)& 

Jak mogę go wysłać jako JSON?

Odpowiedz

55

Z JSON.stringify(object)

próbki:

$.ajax({ 
    type: 'POST', 
    url: '<url>', 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'json', 
    data: JSON.stringify(object) 
}); 

Uwaga JSON.stringify nie jest dostępna we wszystkich przeglądarkach (http://caniuse.com/#feat=json), w szczególności przeglądarek IE7 i niższe.

Jeśli trzeba to wspierać przeglądarek też można użyć tej biblioteki javascript: https://github.com/douglascrockford/JSON-js

+0

Dziękuję bardzo! – Jason

4

stringify użyciu JSON.stringify(object)

Modyfikacja pola data do:

... 
data: JSON.stringify(object), 
... 

Sposób, w jaki to robią, IMO, jQuery widzi parametr jako słowniku (par klucz-wartość), a konstruuje z tego ciąg percentylowy; i dlatego widzisz ten wynik.

+0

dzięki, pomogłem/ – ajahongir

-1

znalazłem łatwiej wysyłać dane zalega „/ x-www-form-urlencoded aplikacji” formatu z JSON jako pole to tak:

$.ajax({ 
    type: 'POST', 
    url: '<url>', 
    dataType: 'json', 
    data: {json:JSON.stringify(object)} 
}); 

na serwerze użyć zwykłego sposobu, aby otrzymać pole nazywa json.

Po prostu udostępnione, aby sprawdzić, czy jest to ważne dla Ciebie.

+0

Dobra uwaga! To zależy od tego, w jaki sposób OP potrzebuje/chce to z konfiguracją serwera – Ian

Powiązane problemy