微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

html5 – Node.js – 如何从html发送数据到express

这是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/');

我有2个问题:

>如何从html页面调用node.js中的myaction函数?因为html文件在端口80上运行,node.js在8080上运行(当我尝试将node.js移动到端口80时,它写入“//未处理的错误”事件)
>在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使用express.static中间件来提供静态内容,如index.html。

原文地址:https://www.jb51.cc/html5/169428.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。