次のリクエストを含む資格情報JSONオブジェクトをnode.jsに送信しています。
credentials = new Object();
credentials.username = username;
credentials.password = password;
$.ajax({
type: 'POST',
url: 'door.validate',
data: credentials,
dataType: 'json',
complete: function(validationResponse) {
...
}
});
サーバー側では、送信された資格情報をJSONオブジェクトにロードして、さらに使用したいと思います。
ただし、reqオブジェクトからJSONを取得する方法がわかりません...
http.createServer(
function (req, res) {
// How do i acess the JSON
// credentials object here?
}
).listen(80);
(関数(req、res)にディスパッチャーがあり、さらにreqをコントローラーに渡すので、.on( 'data'、...)関数を使用したくありません)
サーバー側では、JSONではなくリクエストパラメーターとしてjQueryデータを受け取ります。 JSON形式でデータを送信する場合は、JSONを受信し、それを解析する必要があります。何かのようなもの:
_$.ajax({
type: 'GET',
url: 'door.validate',
data: {
jsonData: "{ \"foo\": \"bar\", \"foo2\": 3 }"
// or jsonData: JSON.stringify(credentials) (newest browsers only)
},
dataType: 'json',
complete: function(validationResponse) {
...
}
});
_
サーバー側では、次のことを行います。
_var url = require( "url" );
var queryString = require( "querystring" );
http.createServer(
function (req, res) {
// parses the request url
var theUrl = url.parse( req.url );
// gets the query part of the URL and parses it creating an object
var queryObj = queryString.parse( theUrl.query );
// queryObj will contain the data of the query as an object
// and jsonData will be a property of it
// so, using JSON.parse will parse the jsonData to create an object
var obj = JSON.parse( queryObj.jsonData );
// as the object is created, the live below will print "bar"
console.log( obj.foo );
}
).listen(80);
_
これはGETで機能することに注意してください。 POSTデータを取得するには、ここを見てください: Node.jsでPOSTデータをどのように抽出しますか?
オブジェクトをJSONにシリアル化し、jsonDataに値を設定するには、JSON.stringify(credentials)
(最新のブラウザーの場合)または JSON-js を使用できます。ここでの例: jQueryでJSONにシリアル化