2016-11-16 80 views
1

我試過了所有我能想到的AJAX Post請求的變體,而且我的Express應用程序仍然沒有收到正確的請求。JSON JQuery Ajax POST的錯誤

var json = {} 
var skus = [1,2,3] 
json.data = { 
    "test":"test", 
    "aoeu":"aoeu" 
} 
$.post('/jet/api/putProduct',json) 

我simplifed到這個代碼,它仍然無法通過正常的到來。

它出現在req.body的Express服務器上,如下所示。

{data[test]: "test", data[aoeu]: "aoeu"} 

我試過json["data"] = ...沒有。 我試過使用$.ajax()而沒有。 我試過不同的方式建立對象/數組,並沒有任何東西。

我使用app.use(bodyParser.json())

我不知道在哪裏可以深入挖掘,但這個功能似乎很基本的,所以我不知道在哪裏掛斷的。

任何人都可以指向正確的方向進行調試嗎?這是一個快遞問題嗎?我已經花了太久了。

+0

您發送的是json,所以'bodyParser.json()'不起作用。 jQuery ajax的默認contentType是'application/x-www-form-urlencoded' – charlietfl

+0

感謝您的詳細瞭解。我正在嘗試使用contentType設置爲application/json的$ .ajax(),如下所示。問題出在'app.use(bodyParser.urlencoded({extended:false}))'我切換到了true,現在一切都很好。呼。 – jheyer159

+0

以下由@TechBreak回答不會正確解析數據到json – charlietfl

回答

0

你可以做以下讓它有點簡單,

var json = { 
    "test":"test", 
    "aoeu":"aoeu" 
} 

和發送阿賈克斯後如下,

$.ajax({ 
    url: '/jet/api/putProduct', 
    type: "POST", 
    data: json, 
    contentType: "application/json" 
}); 

所以Express服務器上req.body你應該得到的是如下。

{ 
    "test":"test", 
    "aoeu":"aoeu" 
} 
+0

只能設置contentType而不會將數據字符串化 – charlietfl