【问题标题】:Express.js Won't Render in Post ActionExpress.js 不会在后期操作中呈现
【发布时间】:2014-12-05 17:33:23
【问题描述】:

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);
    }
  });
});

供大家学习。 我通过将其添加到玉文件中将其更改为从服务器端调用:

form(role="form" method="POST")

【问题讨论】:

  • 定义“从不渲染”。你有错误吗?你在前端看到什么(模板)?
  • 谢谢@mscdex,没想到回复会这么快。我已经更新了这个问题。它没有显示任何错误。它只是显然不想渲染。问题仅在渲染上。除此之外,一切都在工作。
  • 如果user/register 没有被渲染到前端,那么在发布到/contact/sendEmail 之后,您在客户端看到了什么?空白页?还有什么?

标签: node.js post express pug render


【解决方案1】:

我自己成功解决了! 我发现它发生是因为我从客户端调用了来自$.ajax 的路由。 当我通过将此代码放入表单并删除$.ajax来更改调用方法时,它就完成了。谢谢@mscdex

form(role="form" method="POST")

我将路由 /contact/sendEmail 更改为 /contact

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-31
    • 2014-07-16
    • 2014-06-16
    • 2011-09-15
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多