2017-07-13 12 views
0

サーバーを表現するjsonオブジェクトを投稿したいと考えています。jsonをエクスプレスサーバーでjqueryを使用して投稿する

はJavascriptを

var task = { 
    task: "Do something", 
    deadline: "5 am" 
}; 

$.post("http://localhost:3000/api/tasks", task, (data) => { 
    console.log(data); 
}, "json") 

のNode.js/Expressの私はポストマンを使用してサーバーをテストするとき、私は期待される出力を得る

var bp = require('body-parser') 

app.use(bp.json()); 

app.post('/api/tasks', (req, res) => { 
    console.log(req.body); 
    res.json(req.body); 
}) 

は、すなわち、それはでtaskオブジェクトを表示しますコンソールに送信し、クライアントにも送信します。

上記のJavaScriptコードを実行すると、空のオブジェクトがコンソールに表示され、空のオブジェクトが返されます。 jquery ajaxコールで何が欠けていますか?

+1

jsonを送信していません。 $ .ajaxのデフォルトは 'application/x-www-form-urlencoded'です – charlietfl

+0

は' task'のjsonオブジェクトではありませんか? – akshayKhot

+0

jsonオブジェクトのようなものはありません。 jsonは文字列データ形式です – charlietfl

答えて

1

リクエストにapplication/jsonヘッダーを追加してみてください。

$.ajax({ url: 'URL', 
type: 'POST', 
contentType: 'application/json', 
data: JSON.stringify(DATA), 
success: function(res) { 
console.log(res) 
} 
}) 
+0

ありがとう!それはうまくいった。 '$ .ajax()'の代わりに '$。post()'を使って同じことを達成する方法はありますか? – akshayKhot

+0

$ .postは単に'のすべての$ .ajaxも機能します。 –

+0

答えに '$ .post()'を使ってコードスニペットを追加できますか? '$ .post()'に 'contentType'を設定する正しい構文がわかりません – akshayKhot

関連する問題