2017-04-06 50 views
0

我使用jQuery那數據是包含數組的JSON對象發送請求到節點/ Express服務器:陣列在AJAX請求JSON對象數據

var data = { 
    "name": "James Jamesy", 
    "children": [ 
     { 
      "name": "Tiny James", 
      "age": "4" 
     }, 
     { 
      "name": "Little James", 
      "age": "6" 
     }, 
     { 
      "name": "Graham", 
      "age": "8" 
     } 
    ] 
} 

var request = $.ajax({ 
    method: 'PUT', 
    url: apiPath + 'updateuser', 
    data: data, 
    dataType: 'json' 
}); 

本身工作正常的請求,但是該服務器是報告中的數據爲:

var data = { 
    "name": "James Jamesy", 
    "children": JSON.stringify([ ... ]) 
} 
012:

{ 
    name: 'James Jamesy', 
    'children[0][name]': 'Little James', 
    'children[0][age]': '4', 
    'children[1][name]': 'Medium James', 
    'children[1][age]': '6', 
    'children[2][name]': 'Graham', 
    'children[2][age]': '8' 
} 

現在我已經不是字符串化的兒童陣列想通了,我可以得到我想要的結果

然後JSON.parse()在服務器上。

但是我希望有人可以解釋爲什麼數組被轉換爲它在請求中的位置,以及我是否應該以不同的方式處理這個問題?正如在這個例子中,轉換單個數組很好,但是我可能會將我想要發送到服務器的半複雜對象轉換爲可能。

在此先感謝!

編輯:(?)此外和奇怪,如果我發送JSON結果早在傳遞JSON,它完美的作品:

res.json(JSON.parse(req.body.categories)); 

瀏覽器註銷的對象,我可以完全操縱它精細。

+0

嘗試改變'數據類型:在Ajax調用json'' –

+0

感謝您的答覆: 'json''到'的contentType'!不幸的是,這導致服務器只是收到一個空的對象。 ('{}') – stuntboots

+0

我看到很多JSON錯誤lol你在Express中使用body parser嗎? –

回答

0

您沒有通過ajax傳遞JSON字符串,這就是爲什麼您無法處理後端數據的原因。

var data = { 
    "name": "James Jamesy", 
    "children": [ 
     { 
      "name": "Tiny James", 
      "age": "4" 
     }, 
     { 
      "name": "Little James", 
      "age": "6" 
     }, 
     { 
      "name": "Graham", 
      "age": "8" 
     } 
    ] 
} 

var request = $.ajax({ 
    method: 'PUT', 
    url: apiPath + 'updateuser', 
    data: JSON.stringify(data), 
    contentType: 'application/json', // for request 
    dataType: 'json' // for response 
});