0

mootools を使用して、ノード 0.10.3 で AJAX 接続を確立しようとしています。私のコードは次のとおりです。

クライアント

var ajax = new Request({
url: '/register',
method: 'post',
onSuccess: function(responseText){
    console.log(responseText);
}
 })

 var json = {data:'data'};
 ajax.send(JSON.stringify(json));
 //ajax.send(json);

サーバ

var express = require('express');
var app = express();

app.use(express.static(__dirname + '/public'));

app.listen(1344);

app.post('/register', function(req,res){
     //Auth.register()
     console.log(req.body);
     res.contentType('json');
     res.send({ some: JSON.stringify({response:'json'}) })
})

接続は正常に機能しています。クライアントで私は応答を受け取ります。したがって、console.log(responseText)OnSucces メソッドの内部は正しい値を出力しています。

しかし、サーバー側ではconsole.log(req.body)undefined.

ここでいくつか疑問があります。mootools は javascript オブジェクトを json 文字列に変換しますか? オブジェクトを変換する必要はありますか? AJAXを介してノードに情報を送信する正しい方法は何ですか? これでajax.send(JSON.stringify(json));よろしいですか?それともこんな感じajax.send(json)ですか;?

ヘッダーを json に指定する必要がありますか?

特定の問題を解決することとは別に、node.js に関するこの概念を確実に明確にするための記事やフィードバックがあればよいでしょう。

編集

同様の問題に直面している人のために、正しいコードを投稿します。パーサーについては Noah が正しかったのですが、もう 1 つの詳細があります。パーサーは重要なデータを期待しています。幸いなことに、データを例として使用していました。

クライアント

var ajax = new Request({
   url: '/register',
   method: 'post',
   onSuccess: function(responseText){
       console.log(responseText); //Logs "some": "{\"response\":\"json\"}"
   }
})
ajax.send({data:{ok:'OK'}});

サーバ

var express = require('express');
var app = express();

app.use(express.static(__dirname + '/public'));
app.use(express.bodyParser());
app.listen(1344);

app.post('/register', function(req,res){
    console.log(req.body); //logs {ok:'OK'}
    res.contentType('json');
    res.send({ some: JSON.stringify({response:'json'}) })
})
4

1 に答える 1

3

投稿したコードには、 bodyParser ミドルウェアがありませんapp.use(express.bodyParser()

bodyParser ミドルウェアを追加すると、アクセスできるようになりますreq.body

var express = require('express');
var app = express();
app.use(express.bodyParser()
app.use(express.static(__dirname + '/public'));
app.use(app.router)
于 2013-04-14T15:30:51.490 に答える