1.app.js

// 引入模块
const Koa = require('koa');
const router = require('koa-router')(); /*引入是实例化路由 推荐*/
const views = require('koa-views');
const common = require('./module/common.js'); // 实例化
let app = new Koa(); // 应用ejs模板引擎
app.use(views('views', { map: { html: 'ejs' } })); router.get('/', async (ctx) => {
await ctx.render('index');
}) // 接收post提交的数据
router.post('/doAdd', async (ctx) => {
// 原生node.js 在 koa 中获取表单提交的数据
let data = await common.getPostData(ctx);
console.log(data); ctx.body = data;
}) app.use(router.routes());
app.use(router.allowedMethods()); app.listen(3000);

2.module/common.js

exports.getPostData = function (ctx) {
// 获取数据 异步
return new Promise(function (resolve, reject) {
try {
let str = '';
ctx.req.on('data', function (chunk) {
str += chunk;
}) ctx.req.on('end', function (chunk) {
resolve(str)
})
} catch (err) {
reject(err);
}
})
}

3.index.html

<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head> <body>
<form action="/doAdd" method="post">
用户名:<input type="text" name="username" />
<br /> 密码: <input type="password" name="password" />
<br />
<button type="submit">提交</button>
</form>
</body> </html>

4.目录

5.效果图

koa 基础(十)原生node.js 在 koa 中获取表单提交的数据的更多相关文章

  1. koa 基础(十一)koa 中 koa-bodyparser 中间件获取表单提交的数据

    1.app.js /** * koa 中 koa-bodyparser 中间件获取表单提交的数据 * 1.npm install --save koa-bodyparser * 2.引入 const ...

  2. 在客户端先通过JS验证后再将表单提交到服务器

    问题:想要在客户端先通过JS验证后再将表单提交到服务器 参考资料: jQuery 事件 - submit() 方法 试验过程: 服务器端使用PHP <html> <head> ...

  3. js控制页面显示和表单提交

    早期的web页面在显示方面一般在后台进行控制,虽然对后台开发来讲是比较容易做到的,但是涉及到一个问题,那就是数据库压力. 因为要控制显示,所以会比较频繁的从数据库中来回调用. 现在的js功能越来越强, ...

  4. js中触发表单提交

    html代码: <form action="/test/action" method="get" id="myForm"> &l ...

  5. JS 无限长form表单提交

    1 简介 开发时候,总会遇到根据后台传的变量{组件数}来动态渲染组件的情况,比如后台传命令要绑定10个父子关系,则前台展开十个input组件,后台决定绑定5个福字关系,则前台展开5个input组件.再 ...

  6. 按钮js跳转到非表单提交页

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. node.js系列(实例):原生node.js+formidable模块实现简单的文件上传

    /** * 原生node.js结合formidable模块实现图片上传改名 * @Author:Ghost * @Date:2016/07/15 * @description: * 1.引入模块htt ...

  8. node.js系列(实例):原生node.js实现接收前台post请求提交数据

    前台界面: 前台代码: <form class="form-horizontal" method="post" action="http:127 ...

  9. 编写原生Node.js模块

    导语:当Javascript的性能需要优化,或者需要增强Javascript能力的时候,就需要依赖native模块来实现了. 应用场景 日常工作中,我们经常需要将原生的Node.js模块做为依赖并在项 ...

随机推荐

  1. JS中数组与对象的遍历方法实例小结

    一.数组的遍历: 首先定义一个数组 1 arr=['snow','bran','king','nightking']; 1.for循环,需要知道数组的长度; 2.foreach,没有返回值,可以不知道 ...

  2. 绑定css样式,点击高亮

    <div class="flex-lay" style="color:#999"> <div bindtap="changeType ...

  3. 实现div可以调整高度(div实现resize)

    实现div可以调整高度(div实现resize) 一.div 实现resize(类似textarea) 代码如下: <!DOCTYPE html> <html> <hea ...

  4. Spring讲解-----------表达式语言

    转自:https://blog.csdn.net/u011225629/article/details/47143083 5.1  概述5.1.1  概述       Spring表达式语言全称为“S ...

  5. lumen时区

    今天用 Lumen 框架写代码时, 也是初次体验 Lumen, 遇到了一个问题, 从数据库里查出的时间比数据库里保存的 TIMESTAMP 时间慢了8个小时, 很明显这是一个时区设置的问题, 本以为可 ...

  6. deep_learning_CNN

    AI学习笔记——卷积神经网络(CNN) image.png 上篇文章简单地地介绍了神经网络和深度学习,在神经网络中,每一层的每个神经元都与下一层的每个神经元相连(如下图), 这种连接关系叫全连接(Fu ...

  7. 数据总线&地址总线&控制总线

    数据总线 (1) 是CPU与内存或其他器件之间的数据传送的通道. (2)数据总线的宽度决定了CPU和外界的数据传送速度. (3)每条传输线一次只能传输1位二进制数据.eg: 8根数据线一次可传送一个8 ...

  8. 【转载】Role of RL in Text Generation by GAN

    本篇随笔为转载,原贴作者:知乎 SCUT 胡杨,原贴地址:Role of RL in Text Generation by GAN(强化学习在生成对抗网络文本生成中扮演的角色).

  9. VMware提示此主机支持Intel VT-x,但Intel VT-x处于禁用状态怎么解决

    本文链接:https://blog.csdn.net/weixin_40816738/article/details/90146770 ThinkPad笔记本1.开机按F1或Fn+F1进入BIOS,切 ...

  10. httpleaks及url的小技巧(http:evil)

    HTTP Leak攻击简介 当前Web技术下包含了大量HTML元素和属性,这些HTML元素和属性会请求一些外部资源,而在它们的HTTP请求过程中,可能存在潜在的敏感信息泄露.为此,德国著名网络安全公司 ...