-1
今天,我正在第一次使用Ajax並面臨一個奇怪的問題。在使用jQuery創建Ajax'POST'請求時,它會創建一些奇怪的語法。我還沒有在其他問題中找到答案,實際上,我也不知道我應該尋找什麼。jQuery Ajax Post更改對象結構
有了郵遞員我用這個作爲我的「POST」請求的主體:
{
"name": "[email protected]",
"automaticDelete": false,
"cc": {
"ccFolder": false,
"smartDelete": false,
"deletionDays": 182
},
"filters": [
{
"id": 0,
"active": false
}
]
}
當我使用GET
得到的對象(不阿賈克斯)返回正是這一點。然而,當我使用POST
與阿賈克斯,並通過相同GET
方法,其他對象得到它,我收到這樣的:
{
"name": "[email protected]",
"automaticDelete": "false",
"cc[ccFolder]": "false",
"cc[smartDelete]": "false",
"cc[deletionDays]": "182",
"id": 4
}
我的jQuery代碼看起來是這樣的:
var emailAccount = {
"name": emailAddress.val(),
"automaticDelete": false,
"cc": {
"ccFolder": false,
"smartDelete": false,
"deletionDays": 182
},
"filters": []
};
$.ajax({
type: 'POST',
url: basicUrl + 'emails',
data: emailAccount,
success: function() {
...
},
error: function() {
...
}
});
我有什麼到目前爲止已經試過:
- 使用
contentType: 'application/json'
(導致了使用dataType: "json"
- 500錯誤從JSON服務器)
所以我的問題是:這是什麼?
"cc[ccFolder]": "false",
"cc[smartDelete]": "false",
"cc[deletionDays]": "182"
爲什麼Ajax會像這樣創建它?
我訪問這樣的代碼:
function getData(path, followUp, id) {
var dataRequest = new XMLHttpRequest();
dataRequest.open('GET', basicUrl + path);
dataRequest.onload = function() {
var receivedData = JSON.parse(dataRequest.responseText)
gotEmails(receivedData)
};
dataRequest.send();
}
function gotEmails(data) {
for (i = 0; i < data.length; i++) {
var userEmailAccount = {
id: data[i].id,
name: data[i].name,
automaticDelete: data[i].automaticDelete,
cc: data[i].cc,
filters: []
};
if (data[i].filters != 'undefined') {
var filterQuery = queryBuilder("filters?", data[i].filters);
getData(filterQuery, 9, data[i].id);
}
}
}
你可以分享你如何訪問響應嗎?在上面的代碼中沒有看到。 – Jeremy
我編輯了這個問題。我認爲這是相關的代碼。通過我在JSON中直接創建的所有數據以及通過Postman,它都能很好地工作。 – Brudus
看起來它正在做文檔所說的。 jQuery不會將對象轉換爲json。對象使用$ .param方法轉換爲參數字符串。 –