ajax
jQuery のメソッドを呼び出す chrome 拡張機能を作成しました。
content-script.js
[...]
$.ajax({
"url": "http://localhost:5000/",
"type": "PUT",
"contentType": "application/json",
"data": { "name": "random object" },
"dataType": "json"
});
[...]
サーバー側では、属性で渡された情報を取得しようとしていdata
ます:
web.js
[...]
app.put('/', function(request, response) {
console.log(request.data);
});
[...]
しかし、私はundefined
代わりに得ています。サーバー側 ( Node.js + express.jsdata
)で取得されるはずの属性で渡されたオブジェクトはどのようになっていますか?
また、そこにたくさんのものを試しconsole.log(request)
てみましたが、属性で渡した情報のように見えるものは何もありませんでしたdata
...
編集
私の最新の試み(greydslの回答に基づく)は、上記のコードに次の変更をもたらします。
app.use(express.bodyParser());
の直前に追加app.put...
。- どこまでも変わっ
put
たpost
request.data
に変更request.body.data
これで、コードは次のようなフォームに応答するときに必要な処理を実行します。
<form method="post" action="/">
<input name="data" type="text" value="WOO HA" />
<input type="submit" name="submit" value="submit" />
</form>
post
ただし、代わりに使用に戻すと、まだ失敗します(何らかの理由put
でブラウザが終了します)http://localhost:5000/?data=WOO+HA&submit=submit
また、ajax でput
ting (またはpost
ing) を実行すると失敗します (上記のコードを参照)。ajaxで試してみると、サーバーで次のようになります。
SyntaxError: Unexpected token ILLEGAL
at Object.parse (native)
at IncomingMessage.<anonymous> (/home/shawn/.node_libraries/.npm/connect/1.8.7/package/lib/middleware/bodyParser.js:135:16)
at IncomingMessage.emit (events.js:61:17)
at HTTPParser.onMessageComplete (http.js:133:23)
at Socket.ondata (http.js:1019:22)
at Socket._onReadable (net.js:683:27)
at IOWatcher.onReadable [as callback] (net.js:177:10)