Node.js POST express 404ing
J'ai un petit node.js application à l'aide du cadre express, mais pour une raison que je ne peux pas obtenir ma demande de répondre à des requêtes POST. Dans le journal du serveur j'ai simplement obtenir "POST /404 5ms", et je ne peux pas comprendre pourquoi.
EDIT: Pour préciser Mon problème est que app.post ne semble pas faire quoi que ce soit
EDIT 2: j'ai réussi à résoudre ce la nuit dernière, mais maintenant je ne peux pas savoir à quel point je l'ai corrigé.
Node.js code serveur:
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'));
});
Sur la page web, j'ai le code javascript suivant:
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)
}
);
}
OriginalL'auteur LucienK | 2013-06-04
Vous devez vous connecter pour publier un commentaire.
Si vous envoyez des messages /que votre journal est à dire que vous êtes "POST /404 5ms", vous devez modifier la ligne suivante:
à
Cela permettra un GET ou POST sur ce parcours. Vous pouvez aussi simplement utiliser
app.post()
si vous ne poster sur ce parcours. Espérons que cette aide.Docs ici: http://expressjs.com/api.html#app.all
Vous êtes à l'aide de l'app.post en "/test" non "/". Lire ma réponse plus approfondie.
Et je dis que j'ai été Poster /test, ce n'est pas /. Je l'ai eu à travailler, ce qui n'était pas le problème. Manged pour obtenir ce travail la nuit dernière, et maintenant, je ne me souviens pas que le changement j'ai fait il l'a fait. Il me semble avoir un problème d'engagement et d'étiquetage des correctifs correctement quand je suis fatigué...
ah. du sens. En tout cas, merci pour l'aide. La vôtre n'était pas le bon correctif pour le problème, mais suffisamment proche pour que je vais marquer la vôtre comme la réponse.
OriginalL'auteur thomallen
Assurez-vous que la forme.attr("action")' c'est d'avoir la bonne URL. Il semble que votre formulaire est l'affichage de la page d'index plutôt que de la "/test". Peut-être doit être modifié pour
$('form').attr("action")
OriginalL'auteur Xerri
Pour moi, le problème était que j'avais ma
au-dessous de cette partie ajoutée par express-générateur à mon app.js
En changeant l'ordre dans le fichier que j'ai résolu ce problème.
OriginalL'auteur frankenapps