2012-12-19 105 views
35

試圖發送json。這裏是我的功能:JQuery Post發送表單數據而不是JSON

var object = ... ; 

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

但每當我檢查瀏覽器,它總是將其作爲查詢參數:

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

如何獲得它發送的JSON?

回答

55

隨着JSON.stringify(object)

樣品:

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

注意不是所有的瀏覽器(http://caniuse.com/#feat=json)支持JSON.stringify,在特定瀏覽器IE7和較低。

如果您需要支持這個瀏覽器也可以使用該Javascript庫:https://github.com/douglascrockford/JSON-js

+0

非常感謝! – Jason

4

字符串化使用JSON.stringify(object)

修改data領域:

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

你正在做它的方式,國際海事組織,jQuery的看到參數作爲一個字典(鍵值對),和從中構建百分位編碼的字符串;因此你可以看到輸出。

+0

謝謝,幫助/ – ajahongir

-1

我發現它更容易在默認情況下使用JSON作爲發送數據「應用/的X WWW的形式,進行了urlencoded」格式這樣的領域:

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

在服務器上使用的常規方法來接收場稱爲json

只是共享,看看這是否適合你。

+0

好點!這取決於OP如何/需要它們與服務器設置 – Ian