我遇到了Express的问题,我尝试使用app.post()函数,但它不起作用,我不知道为什么......
虽然我包含了bodyParser()......
问题:页面加载没有响应,没有错误消息。我没有看到console.log()...
app.js:
var express = require('express')
, routes = require('./routes')
, user = require('./routes/user')
, postProvider = require('./postProvider.js')
, http = require('http')
, path = require('path')
, compass = require('node-compass')
, hash = require('./auth').hash;
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(compass());
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.use(express.cookieParser('dsqdq edsds'));
app.use(express.session());
});
app.configure('development', function () {
app.use(express.errorHandler());
});
app.get('/admin', function(req, res){
res.redirect('login');
});
app.get('/login', function(req, res){
res.render('login');
});
app.post('/login', function(req, res){
console.log('test');
});
app.get('/', routes.index);
http.createServer(app).listen(app.get('port'), function () {
console.log("Express server listening on port " + app.get('port'));
});
login.jade:
extends layout
block content
h1 Login
h3 "tj" and "foobar"
form(method="post", action="/login")
input(type="text", placeholder="Username", autofocus="true", name="username")
br
input(type="password", placeholder="Password", name="password")
br
input(type="submit", value="login")
答案 0 :(得分:3)
我发现app.post代码没有任何问题!!
app.post('/login', function(req, res){
console.log('test');
res.end(); // end the response
});
一个建议是,您应该将每个响应发送给客户端,否则您的服务器将无响应。
答案 1 :(得分:0)
您的帖子请求会发送到/test
(因为您使用了表单的action
属性),而您的快速听众正在收听/login
上的任何帖子请求。
您的代码应如下所示:
block content
h1 Login
h3 "tj" and "foobar"
form(method="post", action="/login")
如果你希望这个工作!
答案 2 :(得分:0)
我将'router.post()...'复制到另一个js文件,并在app.js中更改路由,它有效!但'router.post()'方法仍然是一个警告。有时它似乎是一个webstorm中的警告,但它实际上可以工作!
答案 3 :(得分:0)
尽管我没有遍及这里提到的整个代码,但我发现了一个类似的问题并能够对其进行调试。
我将分享我犯了错的地方,也许这可能会对某人有所帮助。
下面的代码是HTML出错的部分:
<form action="/" method="**post**">
<select name="crypto">
<option value="BTC">Bitcoin</option>
<option value="ETC">Ethereum</option>
<option value="LTC">Litecoin</option>
</select>
<select name="fiat">
<option value="USD">US Dollors</option>
<option value="GBP">GB Pounds</option>
<option value="EUR">EU Euros</option>
</select>
</form>
检查
此代码中的错误是,尽管的(类型)是“提交”,但尚未包含在标记内。现在,当您使用“ app.post”方法获取数据或尝试对需求进行“ console.log(value)”时,它无法访问。
我可以通过在表单中包含按钮标签来进行调试。