【问题标题】:NodeJS Express post request always returning a 404 page, while it does return the correct pageNodeJS Express 发布请求总是返回 404 页面,但它确实返回了正确的页面
【发布时间】:2020-08-27 12:24:09
【问题描述】:

我对 NodeJS 很陌生,我正在编写一个分页脚本来显示数据库数据。使用表单按钮导航到下一个结果,因为这是我使用 Node.js 进行按钮交互的唯一方法。我知道这不是最佳实践,但足以满足我现在的需求:) 但是,当用户单击下一个/上一个按钮时,确实会调用发布请求但始终返回 404 页面,而如果我复制了那个确切的返回页面并自己加载,页面加载正常。

发帖功能:

  if(req.body.next){
    console.log(req.body.next)
    start += 100;
    console.log(start);
    get_products(start);
  }
  if(start >= 0 && req.body.prev){
    console.log(req.body.prev)
    start -= 100;
    console.log(start);
    get_products(start);
  }
});

哈巴狗形态:

form(method = 'POST', action="/products")
     button(type='submit', name='prev', value='prev') previous
     button(type='submit', name='next', value='next') next

帖子的输出:

next
100
POST /products - - ms - -
prev
0
POST /products - - ms - -
next
100
POST /products - - ms - -
next
200
POST /products - - ms - -
next
300
POST /products - - ms - -
next
400
POST /products - - ms - -
prev
300

【问题讨论】:

  • 使用get_products(例如res.sendres.render)获得产品后重定向调用在哪里?
  • 啊,这可能是问题所在。明天我会研究一下,谢谢@montrealist
  • 恕我直言,您应该使用 GET 和一些参数,而不是 POST。查找 RESTful API。我认为是 POST 处理导致服务器抛出一个额外的错误,因为它不知道如何处理它。

标签: node.js express


【解决方案1】:

@montrealist 的评论回答了我的问题。我必须在我的帖子调用中添加一个res.render 以使函数刷新页面。

更新后的电话:

router.post('/', function(req, res, next) {
  if(req.body.next){
    start += 100;
    get_products(start);
    res.render('products' , {
      title:"All products from index: " + (start - 99).toString(),
      products:products
    })
  }
  if(start >= 0 && req.body.prev){
    start -= 100;
    get_products(start);
    res.render('products' , {
      title:"All products from index: " + (start + 101).toString(),
      products:products
    })
  }
});

【讨论】:

    猜你喜欢
    • 2020-05-12
    • 1970-01-01
    • 2011-10-24
    • 2013-08-28
    • 2015-07-31
    • 2020-08-21
    • 1970-01-01
    • 2018-06-12
    相关资源
    最近更新 更多