【问题标题】:not rendering page on request node.js未在请求 node.js 上呈现页面
【发布时间】:2021-05-13 13:44:58
【问题描述】:

我有这个前端功能:

 var finalSelValue = ""
    function changeFunc() {
     var selectBox = document.getElementById("selectBox");
     var selectedValue = selectBox.options[selectBox.selectedIndex].value;

   finalSelValue = selectedValue
    fetch('/adminFilter', {
        method: 'POST',
        headers: {'content-type': 'application/json'},
        body: JSON.stringify({
            finalSelValue
        })
    })
    }

然后在后端:

  router.post('/adminFilter', auth.ensureAuthenticated, auth.roleCheck('ADMIN'), (req, res) => {

  console.log("filter " + req.body.finalSelValue)

  var query = "select * from tkwdottawa where STATUS = '" + req.body.finalSelValue + "'"
  ibmdb.open(DBCredentials.getDBCredentials(), function(err, conn) {
      if (err) return console.log(err);
      conn.query(query, function(err, rows) {
          if (err) {
              res.writeHead(404);

          }

          for (var i = 0; i < rows.length; i++) {
            console.log(rows[i])
          }

          res.render('AdminDash', {
              page_title: "AdminDash",
              data: rows
          });


          conn.close(function() {
              console.log('done adminFilter');

          });
      });
  });


})

它正确记录了循环所在的新值,但它没有使用新数据重新渲染页面!我该如何解决这个问题!

【问题讨论】:

  • fetch 的有用之处在于它不会重新加载页面。如果您希望 POST 数据到服务器并使用响应重新加载整个页面,请使用 Javascript 加载 FormData 对象并提交它。或者您必须获取fetch 返回的数据并以编程方式更新页面的相应部分。

标签: javascript sql node.js db2


【解决方案1】:

问题可能是因为您尚未完全配置您的 nodejs 应用程序。您应该知道 render() 方法必须有一个模板引擎来处理可用的视图。您可以只安装以下模板引擎之一,即

  1. 帕格
  2. EJS
  3. 车把

来自 Npm 存储库。

只需使用 npm install [pug 或 ejs] 我建议这两个,因为它们的学习曲线非常简单

另一种解决方案是只使用 send() 或 sendFile() 方法。在这种情况下,这会将数据发送回客户端,即获取请求,然后您可以从 .then 回调中获取响应。 并从前端脚本更新视图。

只是一个注释

渲染方法与模板引擎一起使用,主要是面向服务器端渲染的方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    相关资源
    最近更新 更多