2012-12-19 27 views
35

json göndermeye çalışır. İşte benim işlevi var:JQuery Post, form verisi gönderir ve JSON

var object = ... ; 

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

Ama Chrome kontrol zaman, her zaman Sorgu parametreleri olarak gönderir:

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

Nasıl bu JSON olarak göndermek alabilirim?

cevap

55

:

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

Not JSON.stringify özellikle tarayıcılar IE7 ve alt, bütün tarayıcılar (http://caniuse.com/#feat=json) desteklenmez.

bunu yapabileceğinden bu Javascript kütüphanesi kullanabilirsiniz çok tarayıcılar desteklemek için gerekirse: Ben daha kolay bir şekilde JSON ile varsayılan 'application/x-www-form-urlencoded' formatını veri göndermek için bulduk https://github.com/douglascrockford/JSON-js

+0

Çok teşekkür ederim! – Jason

4
JSON.stringify(object)

data alanını değiştirin kullanarak

stringify:

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

bunu yapıyoruz yolu, IMO, jQuery bir sözlük (anahtar-değer çiftleri) olarak parametreyi görür ve yüzdelik kodlu bir dizeyi bundan yapar; ve böylece çıktıyı görüyorsunuz. JSON.stringify(object)

örnek ile

+0

Teşekkürler, yardımcı oldu/ – ajahongir

-1

böyle alanı: sunucuda

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

alanını almak için düzenli yöntemi kullanın json aradı.

Sadece bunun sizin için geçerli olup olmadığını görmek için paylaşılır.

+0

İyi nokta! Sadece OP'nin sunucu kurulumlarıyla nasıl bir ihtiyaç duyduğuna/istediğine bağlıdır. – Ian