2012-05-28 15 views
1

我試着放在一起會使用JSON數據的API,和我保持變量類型有問題。如何保存查詢字符串類型

告誡:我使用Node.js的

鑑於數據:

{ 
    id: "string", 
    data: [ 
    {input: [0,1,0], output: [1,1]}, 
    {input: [1,0,0], output: [1,0]} 
    ] 
} 

當我做與數據一個jQuery AJAX POST請求被轉移爲:

data[0][input][] 0 
data[0][input][] 1 
data[0][input][] 0 
data[0][output][] 1 
data[0][output][] 1 
data[1][input][] 1 
data[1][input][] 0 
data[1][input][] 0 
data[1][output][] 1 
data[1][output][] 0 
id     string 

或者:id=string&data%5B0%5D%5Binput%5D%5B%5D=0&data%5B0%5D%5Binput%5D%5B%5D=1&data%5B0%5D%5Binput%5D%5B%5D=0&data%5B0%5D%5Boutput%5D%5B%5D=1&data%5B0%5D%5Boutput%5D%5B%5D=1&data%5B1%5D%5Binput%5D%5B%5D=1&data%5B1%5D%5Binput%5D%5B%5D=0&data%5B1%5D%5Binput%5D%5B%5D=0&data%5B1%5D%5Boutput%5D%5B%5D=1&data%5B1%5D%5Boutput%5D%5B%5D=0

我需要做的是解碼數據服務器端但我所有的數據陣列的值被轉換爲字符串

是否有保留價值,即類型的技術:「串」或「INT」等?

我目前使用的NPM的qs模塊來解析我的POST請求主體。

回答

3

JQuery將通過AJAX請求的data選項傳入的任何對象序列化爲application/x-www-form-urlencoded格式(就像查詢字符串一樣)。你想要的是JSON.stringify()你的對象,並傳遞結果字符串作爲data,以及設置Content-Type作爲前面的答案提及。

記住dataType選項指定的jQuery應如何處理與響應請求,而不是如何編碼請求的主體(我已經得到了這個一個燒燬)。

1

既然是JSON服務器,設置內容類型:應用程序/ JSON的POST請求,所以你會被解析的對象,而不是字符串。該對象將保留數據類型。在服務器上使用req.is('application/json')來確保請求的類型是'application/json'。

0

這是一個工作解決方案,希望它有幫助。

$.ajax({ 
    type: 'POST', 
    data: JSON.stringify(data), 
    contentType: 'application/json', 
    url: 'http://localhost:3000/endpoint',      
    success: function(data) { 
     //TODO: do something with data 
    } 
});