3 回答

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊
因?yàn)槟鷽]有指定請(qǐng)求內(nèi)容類型,也沒有更正JSON請(qǐng)求。下面是發(fā)送JSON請(qǐng)求的正確方法:
var?arr?=?{?City:?'Moscow',?Age:?25?};$.ajax({ ????url:?'Ajax.ashx', ????type:?'POST', ????data:?JSON.stringify(arr), ????contentType:?'application/json;?charset=utf-8', ????dataType:?'json', ????async:?false, ????success:?function(msg)?{ ????????alert(msg); ????}});
要注意的事情:
- 使用
方法將javascript對(duì)象轉(zhuǎn)換為JSON字符串,JSON字符串是本機(jī)并內(nèi)置到現(xiàn)代瀏覽器中的。如果您想支持舊的瀏覽器,您可能需要包括JSON.stringify
json2.js
- 控件指定請(qǐng)求內(nèi)容類型。
屬性,以便向服務(wù)器指示發(fā)送JSON請(qǐng)求的意圖。contentType
- 這個(gè)
屬性用于您希望從服務(wù)器獲得的響應(yīng)類型。jQuery足夠聰明dataType: 'json'
猜
它來自服務(wù)器
響應(yīng)頭。因此,如果您有一個(gè)Web服務(wù)器,它或多或少地尊重HTTP協(xié)議,并使用Content-Type
對(duì)于您的請(qǐng)求,jQuery將自動(dòng)將響應(yīng)解析為javascript對(duì)象到Content-Type: application/json
回調(diào),這樣您就不需要指定success
財(cái)產(chǎn)。dataType
要小心的事情:
- 你所說的
是arr
不是數(shù)組
..它是一個(gè)具有屬性的javascript對(duì)象(
和City
)。數(shù)組用Age
在javascript里。例如[]
是一個(gè)由兩個(gè)對(duì)象組成的數(shù)組。[{ City: 'Moscow', Age: 25 }, { City: 'Paris', Age: 30 }]

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊
因?yàn)槟J(rèn)情況下jQuery序列化作為data
參數(shù)$.ajax
..它用$.param
若要將數(shù)據(jù)轉(zhuǎn)換為查詢字符串,請(qǐng)執(zhí)行以下操作。
的jQuery文檔$.ajax
:
[
data
參數(shù)]被轉(zhuǎn)換為查詢字符串,如果不是已經(jīng)轉(zhuǎn)換為字符串的話。
如果要發(fā)送JSON,則必須自己編碼:
data:?JSON.stringify(arr);
請(qǐng)注意JSON.stringify
只存在于現(xiàn)代瀏覽器中。

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊
$.postJSON = function(url, data, success, args) { args = $.extend({ url: url, type: 'POST', data: JSON.stringify(data), contentType: 'application/json; charset=utf-8', dataType: 'json', async: true, success: success }, args); return $.ajax(args);};$.postJSON('test/url', data, function(result) { console.log('result', result);});
- 3 回答
- 0 關(guān)注
- 526 瀏覽
添加回答
舉報(bào)