用jQuery發送JSON數據為什么下面的代碼發送數據為City=Moscow&Age=25而不是JSON格式?var arr = {City:'Moscow', Age:25};$.ajax(
{
url: "Ajax.ashx",
type: "POST",
data: arr,
dataType: 'json',
async: false,
success: function(msg) {
alert(msg);
}
});
3 回答

拉丁的傳說
TA貢獻1789條經驗 獲得超8個贊
因為您沒有指定請求內容類型,也沒有更正JSON請求。下面是發送JSON請求的正確方法:
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對象轉換為JSON字符串,JSON字符串是本機并內置到現代瀏覽器中的。如果您想支持舊的瀏覽器,您可能需要包括JSON.stringify
json2.js
- 控件指定請求內容類型。
屬性,以便向服務器指示發送JSON請求的意圖。contentType
- 這個
屬性用于您希望從服務器獲得的響應類型。jQuery足夠聰明dataType: 'json'
猜
它來自服務器
響應頭。因此,如果您有一個Web服務器,它或多或少地尊重HTTP協議,并使用Content-Type
對于您的請求,jQuery將自動將響應解析為javascript對象到Content-Type: application/json
回調,這樣您就不需要指定success
財產。dataType
要小心的事情:
- 你所說的
是arr
不是數組
..它是一個具有屬性的javascript對象(
和City
)。數組用Age
在javascript里。例如[]
是一個由兩個對象組成的數組。[{ City: 'Moscow', Age: 25 }, { City: 'Paris', Age: 30 }]

森欄
TA貢獻1810條經驗 獲得超5個贊
因為默認情況下jQuery序列化作為data
參數$.ajax
..它用$.param
若要將數據轉換為查詢字符串,請執行以下操作。
的jQuery文檔$.ajax
:
[
data
參數]被轉換為查詢字符串,如果不是已經轉換為字符串的話。
如果要發送JSON,則必須自己編碼:
data:?JSON.stringify(arr);
請注意JSON.stringify
只存在于現代瀏覽器中。

牛魔王的故事
TA貢獻1830條經驗 獲得超3個贊
$.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 關注
- 528 瀏覽
添加回答
舉報
0/150
提交
取消