Express.js не будет отображаться в Post Action
Node.js вроде новый, поэтому я вряд ли что-то найду в интернете. Я уже решил это. Это было потому, что я звонил со стороны клиента, используя $.ajax
, Но когда я пробую это в моем коде ниже, он никогда не рендерится. Начальная страница была / contact, и когда я вызываю /contact/sendEmail, все функции внутри / contact / sendEmail работают, но не работают с рендером. Там не было никакой ошибки вообще. Как будто ничего не случилось.
var Contact = require('../controllers/contact');
module.exports = function(app) {
app.get('/contact', function(req, res) {
res.render('contact');
});
app.post('/contact/sendEmail', function(req, res, next) {
var form = req.body;
Contact.validators.form(form, function(err) {
if (err) {
return res.render('user/register'); //This one never works!
/*return res.render('contact', {
error: err,
});*/
} else {
Contact.sendEmail(req, res, next);
}
});
});
};
Он был вызван этой функцией
$('.contact').submit(function(event, done) {
var form = $(this);
var data = form.serializeArray();
// server side validation
// every contact form field is required
event.preventDefault();
$.ajax({
type: 'POST',
url: '/contact/sendEmail',
data: form.serialize()
})
.done(function(data) {
if (data.status == 'OK') {
$('#contact-success').modal('show');
} else {
return done('Please fill all of the fields.', false);
}
});
});
Для всех, чтобы учиться. Я изменил его для вызова со стороны сервера, добавив это в файл Jade:
form(role="form" method="POST")
1 ответ
Я успешно решил это сам! Я узнал, что это произошло, потому что я называю маршрут из $.ajax
от клиента. Когда я изменяю вызывающий метод, помещая этот код в форму и удаляя $.ajax
, это сделано. Спасибо @mscdex
form(role="form" method="POST")
и я изменил маршрут /contact/sendEmail
чтобы просто /contact
,