未在请求 node.js 上呈现页面

Posted

技术标签:

【中文标题】未在请求 node.js 上呈现页面【英文标题】:not rendering page on request 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 返回的数据并以编程方式更新页面的相应部分。 【参考方案1】:

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

    帕格 EJS 车把

来自 Npm 存储库。

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

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

只是一个注释

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

【讨论】:

以上是关于未在请求 node.js 上呈现页面的主要内容,如果未能解决你的问题,请参考以下文章

使用 Node.js 在服务器上呈现 HTML

Node.js 借助art-template进行后端渲染并呈现页面到前端

使用PhantomJS和node.js保存并呈现网页

Node.js/ Ionic 应用程序未在 Heroku 上正确部署

php -S localhost:8000 未在 node.js 中运行

获取 API 未在 Node.js 中提供响应数据