用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.stringifyjson2.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 關注
- 535 瀏覽
添加回答
舉報
0/150
提交
取消
