当前位置: 首页 > 面试题库 >

Node.js-如何从html发送数据以表达

祁坚壁
2023-03-14
问题内容

这是html中的表单示例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>CSS3 Contact Form</title>
</head>
<body>
<div id="contact">
    <h1>Send an email</h1>
    <form action="/myaction" method="post">
        <fieldset>
            <label for="name">Name:</label>
            <input type="text" id="name" name="name" placeholder="Enter your full name" />

            <label for="email">Email:</label>
            <input type="email" id="email" placeholder="Enter your email address" />

            <label for="message">Message:</label>
            <textarea id="message" placeholder="What's on your mind?"></textarea>

            <input type="submit" value="Send message" />

        </fieldset>
    </form>
</div>
</body>
</html>

这是在服务器上运行的node.js函数:

var sys = require('sys'),
    http = require('http');
    http.createServer(function (req, res) {
            switch (req.url) 
                case '/myaction':
                        res.end(?????);
                    break;
            }
    }).listen(8080);
sys.puts('Server running at http://127.0.0.1:8080/');

我有两个问题:

  1. 如何myaction从html页面调用node.js中的函数?因为html文件在端口80上运行,而node.js在8080上运行(当我尝试将node.js移到端口80时,它会写“ // Unhandled’error’event”)。
  2. 在node.js函数中,我将“ ?????” 如何从html表单获取数据。当我输入req.html.body.name时,我没有得到数据…

问题答案:

使用http.createServer非常底层,对于按原样创建Web应用程序确实没有用。

Express是一个很好的框架,我会建议使用它。您可以使用安装它npm install express

拥有后,您可以创建一个基本的应用程序来处理表单:

var express = require('express');
var bodyParser = require('body-parser');
var app     = express();

//Note that in version 4 of express, express.bodyParser() was
//deprecated in favor of a separate 'body-parser' module.
app.use(bodyParser.urlencoded({ extended: true }));

//app.use(express.bodyParser());

app.post('/myaction', function(req, res) {
  res.send('You sent the name "' + req.body.name + '".');
});

app.listen(8080, function() {
  console.log('Server running at http://127.0.0.1:8080/');
});

您可以使用以下方法将表单指向该表单:

<form action="http://127.0.0.1:8080/myaction" method="post">

您无法在端口80上运行Node的原因是因为该端口上已经有一个进程正在运行(该进程正在为您提供服务index.html)。您可以使用Express
index.html通过express.static中间件来提供静态内容,例如。



 类似资料:
  • 我需要将一些数据从 Angular 传递到 Node.js 服务器。这是我的角度帖子列表组件:从“@angular/核心”导入 { 组件,OnInit };从 “@angular/common/http” 导入 { HttpClient }; 我的node.js服务器: 我想安慰一下。记录数据,但什么都没有发生。

  • 问题内容: 我试图用gzip发送文本,但我不知道如何发送。在示例中,代码使用fs,但是我不想发送文本文件,而只是发送字符串。 问题答案: 你在那儿。我可以衷心地同意,该文档还不足以使您了解如何执行此操作。 一个简化就是不使用;。 …似乎默认情况下会发送UTF-8。但是,当没有默认行为比其他行为更有意义并且我无法立即通过文档进行确认时,我个人宁愿走安全的道路。 同样,如果您需要传递JSON对象,则可

  • 本文向大家介绍以HTML提交表单时,如何指定将表单数据发送到何处?,包括了以HTML提交表单时,如何指定将表单数据发送到何处?的使用技巧和注意事项,需要的朋友参考一下 使用动作属性将文件添加到您要在单击“提交” 按钮之后到达的位置。您还可以添加电子邮件以将数据发送到该电子邮件ID。 示例 您可以尝试运行以下代码来设置以HTML提交表单时将表单数据发送到的位置-

  • 问题内容: 所以我有这个HTML表单: 当用户单击“提交”时,哪种形式最简单的方法将此表单的数据作为JSON对象发送到我的服务器? 更新:我已经走了这么远,但似乎没有用: 我究竟做错了什么? 问题答案: 获取完整的表单数据作为数组,并对其进行json字符串化。 您可以稍后在ajax中使用它。或者,如果您不使用ajax;将其放在隐藏的文本区域中并传递到服务器。如果此数据通过常规格式数据作为json字

  • 问题内容: 似乎有两种方法可以将数据发送到服务器。一种是用于获取像素数组及其8位颜色值。另一种方法是用于发送文件附件。此方法在此处演示。 我想建立一个人们可以保存其画布图纸的站点。哪种方法对我的用户而言更具可扩展性和更快性? 问题答案: 打开选项:使用fabric.js,您可以将fabric.js画布序列化为JSON。 它不仅提供了附加的编辑功能层,而且还允许您执行以下操作(更不用说以后可以编辑其

  • 本文向大家介绍如何指定以HTML发送表单数据时使用的HTTP方法?,包括了如何指定以HTML发送表单数据时使用的HTTP方法?的使用技巧和注意事项,需要的朋友参考一下 使用method属性指定在HTML中发送表单数据时要使用的HTTP方法。 示例 您可以尝试以下代码来实现方法属性-