6

Express フレームワークを使用した小さな node.js アプリケーションを作成しましたが、何らかの理由でアプリケーションを POST 要求に応答させることができません。サーバーログに「POST / 404 5ms」と表示されるだけで、理由がわかりません。

編集:明確にするために-私の問題は、 app.post が何もしていないように見えることです

編集 2: 昨夜、どうにかしてこれを修正できましたが、どの時点で修正したかわかりません。

Node.js サーバー コード:

var express = require('express')
  , routes = require('./routes')
  , user = require('./routes/user')
  , http = require('http')
  , path = require('path');

var app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser('chocolatechip'));
app.use(express.session());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));


// development only
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}

//pages
//Landing page
app.get('/', routes.index);
app.post('/test',function(req,res){
  console.log(req.body);
  res.send("received post");
});
//return list containing users
//app.post('/users', user.list);
//return requested user
app.get('/users/:id', user.get);
//app.post('/users/login', user.login);


//server
http.createServer(app).listen(app.get('port'), function(){
  console.log('Server listening on port ' + app.get('port'));
});

実際の Web ページには、次の JavaScript コードがあります。

var login = $('#login');
  var page = $('#page');
  var register = $('#register');
  var userField = login.find('.user');
  var passField = login.find('.pass');
  var confPassField = login.find('.confpass');
  var form = $('.logform');
  $('#formbutton').on('click',function(){
    if(register.hasClass('hidden')){
      login.addClass('hidden');
      confPassField.val('');
      var logDat = JSON.stringify(form.serializeArray);
      userField.val('');
      passField.val('');
      page.html("Login form submitted");
      $.post(
        form.attr("action"),
        {test:"test"},
        function(data){
          alert("Response: "+data)
        }
      );

    }
4

3 に答える 3

10

ログに「POST / 404 5ms」と表示されているように / に投稿している場合は、次の行を変更する必要があります。

app.get('/', routes.index);

app.all('/', routes.index);

これにより、そのルートへの GET または POST が許可されます。app.post()そのルートにのみ投稿する場合にも使用できます。お役に立てれば。

ドキュメントはこちら: http://expressjs.com/api.html#app.all

于 2013-06-04T23:02:34.467 に答える