2013-02-15 19 views
21

Sử dụng 3.1.0 nhanh Tôi có một hình thức siêu đơn giản:không thể ĐĂNG Node.js hình thức - bày tỏ

<form action="/signup" method="post"> 
    <div> 
     <label>Username:</label> 
     <input type="text" name="username"/><br/> 
    </div> 
    <div> 
     <label>Password:</label> 
     <input type="password" name="password"/> 
    </div> 
    <div><input type="submit" value="Sign Up"/></div> 
</form> 

và trong app.js:

/** 
* Module dependencies. 
*/ 

var express = require('express') 
    , routes = require('./routes') 
    , fs = require('fs') 
    , User = require('./models/User.js') 
    , user = require('./routes/user') 
    , http = require('http') 
    , path = require('path'); 

var app = express(); 

app.configure(function(){ 
    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(app.router); 
    app.use(express.static(path.join(__dirname, 'public'))); 
}); 

app.configure('development', function(){ 
    app.use(express.errorHandler()); 
}); 

app.get('/', routes.index); 
app.get('/form', function(req, res) { 
    fs.readFile('./form.html', function(error, content) { 
     if (error) { 
      res.writeHead(500); 
      res.end(); 
     } 
     else { 
      res.writeHead(200, { 'Content-Type': 'text/html' }); 
      res.end(content, 'utf-8'); 
     } 
    }); 
}); 

app.post('/signup', function(req, res) { 

    var username = req.body.username; 
    var password = req.body.password; 
    User.addUser(username, password, function(err, user) { 
     if (err) throw err; 
     res.redirect('/form'); 
    }); 
}); 

app.get('/users', user.list); 


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

khi cố gắng gửi mẫu đơn này tôi nhận được:

Cannot POST /signup 

và trong giao diện điều khiển:

"NetworkError: 404 Not Found - http://localhost:3000/signup" 

tôi đang thiếu gì ở đây?

Trả lời

21

Ví dụ của bạn phù hợp với tôi. Tôi đã xóa các tham chiếu đến Người dùng, người dùng và các tuyến đường để tôi có thể chạy nó và HTTP POST được nhận và hiển thị chính xác trong bảng điều khiển.

app.post('/signup', function(req, res) { 
    var username = req.body.username; 
    var password = req.body.password; 
    console.log("post received: %s %s", username, password); 
}); 

Tôi nghi ngờ lỗi này nằm trong mã User.addUser() của bạn.

+0

chính xác. vấn đề thực sự là trong User.addUser(). cảm ơn –

+0

Sau khi lãng phí hơn 6 giờ, cuối cùng đã tìm thấy giải pháp những gì tôi đang tìm kiếm. Cảm ơn – Toretto

0

Bạn có thể viết một cái gì đó như thế này:

action="http://localhost:3000/sin" 
-12

chỉ khởi động lại ứng dụng của bạn và tất cả mọi thứ sẽ đi được rồi;)

tất cả những gì xảy ra là bạn đã thêm một số mã trong khi ứng dụng của bạn đang chạy. Để làm cho mã mới có hiệu lực, chỉ cần chạy lại ứng dụng nút của bạn

+5

oh! câu trả lời này có can đảm – rneha725

6
router.route('/signup') 

    // (accessed at POST http://localhost:3000/api/signup) 
    .post(function(req, res) { 
     var username = req.body.username; 
     var password = req.body.password; 
     res.json(
      { 
       message: 'signup success', 
       username : username, 
       password : password, 
      } 
     ); 
    }) 
    .get(function(req,res){ 
     res.json({message: 'get request from signup'}); 
}); 

// REGISTER OUR ROUTES ------------------------------- 
// all of our routes will be prefixed with /api 
app.use('/api', router); 
+6

Cố gắng giải thích mã thay vì chỉ đăng nó. Nó làm gì? Bạn giải quyết câu hỏi của TC bằng cách nào và ở đâu? –

+1

@NahuelIanni cảm ơn. :) thực ra tôi chỉ viết phần mà anh ta gặp lỗi. –

Các vấn đề liên quan