当前位置: 首页 > 知识库问答 >
问题:

节点JS使用post object into HTML

洪建茗
2023-03-14

我正在用纯节点JS编写一个小表单(我不想要框架,因为我正在练习基础知识以了解它是如何“在引擎盖下”工作的)。
我编写下面的代码是为了将我的POST请求中的数据放到一个我console.log的对象中。
现在我正在尝试在html页面“contact-success.html”中使用它。 我的主要问题是,我没有设法使这些信息在我的HTML上可用。 我试着把它当作常量通过,但什么也没发生。 也许有人会看到我错过了什么? ;)

const server = http.createServer(function(req, res){
    console.log('Request was made at ' + req.url)
    if(req.url === '/' || req.url === '/home'){
        // home page
        res.writeHead(200, {'Content-type': 'text/html'})
        fs.createReadStream(__dirname + '/html_files/index.html').pipe(res)
    } else if(req.url === '/contact'){
        // create a if statement to manage the post request (not sure about this part but let's try)
        if(req.method === 'POST'){
            // we state that body is empty
            let body = ''
            // on event 'data' a chunk of data is sent to body and stringified
            req.on('data', chunk => {
                body += chunk.toString()
                //on the end of stream, we parse the body and console,log it
                req.on('end', () => {
                    console.log(parse(body))
                    const contactData = parse(body)
                    // trying to redirect to contact-successafter posting
                    res.writeHead(200, {'Content-type': 'text/html'})
                    fs.createReadStream(__dirname + '/html_files/contact-success.html').pipe(res)
                })
            })

我可以毫无问题地在控制台记录contactData对象,但似乎无法访问它。

共有1个答案

濮升
2023-03-14

使用模板引擎而不是静态文件。 很多都是可用的。

它们提供了将数据传递到文档中的机制,例如:

const filename = __dirname + '/html_files/contact-success.html';
const html = nunjucks.render(filename, contactData);

如果您使用Express,这将会更容易,Express支持模板引擎,内置和API,这些API使得读取POST数据和为不同URL路由的处理要比您编写的代码简单得多(它重新发明了一堆轮子)。

 类似资料:
  • 我有一个Vuejs应用程序,我试图添加谷歌认证。我使用这个插件https://www.npmjs.com/package/vue-google-oauth2在前端生成授权代码,然后将其发送到我的后端,以便它可以获得用户凭据。 以下是前端的代码: 在此之前,我成功地获取了授权代码,并将其发送到使用node编写的后端。js基于官方谷歌文档。https://github.com/googleapis/g

  • 我已经开始在一个简单的node.js应用程序中使用Q Promise包。所以我对如何在所有Promise序列完成后关闭数据库连接感兴趣。 例子: 我想在显示集合名称后关闭连接,但此匿名函数中没有db上下文。 有没有办法用promise模式处理此类案件?

  • 这是我的模型。 这是我的控制器用户。js: app.post('/Signup/',函数(req, res){{console.log(req.body.username); User.new用户( 这个概念是一旦用户名/密码被接受,一个API密钥将与用户名一起存储。虽然,用户名负载正在被接受,但是当我执行UserApiSchema调用来生成api时,没有生成这样的api。也没有错误。

  • 最近我用budo部署了一个node.js服务器端应用程序,它工作正常...但是在部署到Azure(WebAPP)后,它不起作用,并抛出“需要”未定义的错误。我使用VSCode开发项目

  • 问题内容: 我正在使用Angular JS和Node JS开发应用程序,我需要查看用户机器中所有可用的打印机,让用户选择其中一台并打印收据。 有没有办法做到这一点? 问题答案: 我做了一个这样的应用程序。我使用http://nwjs.io/和注释中的模块来完成它:https : //www.npmjs.com/package/printer,这是该模块打印的有效代码在默认打印机中原始文件: 您可以

  • 我有: 它记录了: 我不明白为什么会这样。

  • 问题内容: 有人可以解释如何使用request.js池哈希吗? 在github上的注释说,这大约池: 池-包含这些请求的代理的哈希对象。如果省略,该请求将使用设置为节点的默认maxSockets的全局池。 pool.maxSockets-包含池中最大套接字数量的整数。 我有用于编写CouchDB实例的代码(请注意问号)。基本上,任何连接到我的Node服务器的用户都将彼此独立地写入数据库: 什么是高

  • 问题内容: 以下代码使我在节点js中出现异常:“需要删除或更新” 由于我指定了更新操作,因此无法解决问题。 问题答案: 节点驱动程序中的语法与外壳程序中的语法不同,这是您使用的语法。 有一个单独的功能