get:

前台代码:

<body>
<h1>登录</h1>
<form action="/dologin" method="get">
账号<input type="text" name="username">
密码<input type="text" name="password">
<input type="submit" value="登录">
</form>
</body>

参数传递通过URL传值:

点击登录之后:

后台获取数据代码:

var http = require("http")
var url = require("url")
var ejs = require('ejs')
http.createServer(function (req, res) {
res.writeHead(200, {"Content-Type": "text/html;charset='utf-8'"})
var allUrl = req.url;
var parseUrl = url.parse(allUrl,true);
var path = parseUrl.pathname;
if (path == "/login") {//显示登录页面
ejs.renderFile("views/loginPage.ejs",{},function (err,data) {
res.end(data)
})
} else if (path == "/dologin") {//执行登录操作
//后台获取前台get传值数据
console.log(parseUrl.query);//{ username: '111', password: '222' }
res.end("dologin")
} else {//显示index页面
ejs.renderFile("views/index.ejs",{},function (err,data) {
res.end(data)
})
}
}).listen(8000)

post:

前台代码:

<h1>登录</h1>
<form action="/dologin" method="post">
账号<input type="text" name="username">
密码<input type="text" name="password">
<input type="submit" value="登录">
</form>

点击登录之后url里面没有传值:而是在头文件里面传值

后台获取数据代码:

var http = require("http")
var url = require("url")
var ejs = require('ejs')
http.createServer(function (req, res) {
res.writeHead(200, {"Content-Type": "text/html;charset='utf-8'"})
var allUrl = req.url;
var parseUrl = url.parse(allUrl,true);
var path = parseUrl.pathname;
//获取前台的传值方式get还是post
var method=req.method.toLowerCase();
console.log(method);
if (path == "/login") {//显示登录页面
ejs.renderFile("views/loginPage.ejs",{},function (err,data) {
res.end(data)
})
} else if (path == "/dologin"&&method=='get') {//执行登录操作
//后台获取前台get传值数据
console.log(parseUrl.query);//{ username: '111', password: '222' }
res.end("dologin")
} else if (path == "/dologin"&&method=='post') {//执行登录操作
//后台获取前台post传值数据
var postStr='';
req.on("data",function (chunk) {//注意这里回调函数只写一个参数
postStr+=chunk;
})
req.on("end",function (err,chunk) {
console.log(postStr);//username=111&password=222
//后台向前台输出js逻辑:
res.end("<script>alert('登录成功!');history.back()</script>")
})
} else {//显示index页面
ejs.renderFile("views/index.ejs",{},function (err,data) {
res.end(data)
})
}
}).listen(8000)

二十二、Node.js-get&post的更多相关文章

  1. Bootstrap入门(二十九)JS插件6:弹出框

    Bootstrap入门(二十九)JS插件6:弹出框 加入小覆盖的内容,像在iPad上,用于存放非主要信息 弹出框是依赖于工具提示插件的,那它也和工具提示是一样的,是需要初始化才能够使用的 首先我们引入 ...

  2. Bootstrap入门(二十八)JS插件5:工具提醒

    Bootstrap入门(二十八)JS插件5:工具提醒 工具提示在使用过程中比较常见,但是实现起来有些麻烦,而bootstrap则很好地解决了这个问题. 我们来写一个简单的实例 先引入CSS文件和JS文 ...

  3. Bootstrap入门(二十五)JS插件2:过渡效果

    Bootstrap入门(二十五)JS插件2:过渡效果 对于简单的过渡效果,只需将 transition.js 和其它 JS 文件一起引入即可.如果你使用的是编译(或压缩)版的bootstrap.js  ...

  4. Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十二】

    <Web 前端开发精华文章推荐>2014年第一期(总第二十二期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML ...

  5. Bootstrap <基础二十二>超大屏幕(Jumbotron)

    Bootstrap 支持的另一个特性,超大屏幕(Jumbotron).顾名思义该组件可以增加标题的大小,并为登陆页面内容添加更多的外边距(margin).使用超大屏幕(Jumbotron)的步骤如下: ...

  6. WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇]

    原文:WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇] 在[上篇]中,我们分别站在消息交换和编程的角度介绍了SOAP Fault和FaultException异常.在服务执行过 ...

  7. 微信小程序把玩(二十二)action-sheet组件

    原文:微信小程序把玩(二十二)action-sheet组件 action-sheet组件是从底部弹出可选菜单项,估计也是借鉴IOS的设计添加的,action-sheet有两个子组件, action-s ...

  8. [分享] IT天空的二十二条军规

    Una 发表于 2014-9-19 20:25:06 https://www.itsk.com/thread-335975-1-1.html IT天空的二十二条军规 第一条.你不是什么都会,也不是什么 ...

  9. 二十二、OGNL的一些其他操作

    二十二.OGNL的一些其他操作 投影 ?判断满足条件 动作类代码: ^ $   public class Demo2Action extends ActionSupport {     public ...

  10. VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池

    VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池 在上一节我们创建了完整克隆的自动专有桌面池,在创建过程比较缓慢,这次我们将学习创建Vi ...

随机推荐

  1. Dbvisualizer设置SQL语句自动提示

    Dbvisualizer默认不自动提示SQL语句的命令及查询的表,虽然可以通过Ctrl+/快捷键进行手动调用出提示信息,用习惯了PLSQL Developer难免有些不适应. 设置自动提示方法: 点击 ...

  2. Storm配置说明

    配置项 配置说明 storm.zookeeper.servers ZooKeeper服务器列表 storm.zookeeper.port ZooKeeper连接端口 storm.local.dir s ...

  3. java 蓝桥杯算法提高 _1区间k大数查询

    import java.util.Scanner; public class _1区间K大数查询 { public static void main(String[] args) { Scanner ...

  4. 35. Search Insert Position (Array; Divide-and-Conquer)

    Given a sorted array and a target value, return the index if the target is found. If not, return the ...

  5. 文件后缀与mime类型对应表

    //文档文件类型的 .ai application/postscript    .eps application/postscript    .exe application/octet-stream ...

  6. Hibernate一对多操作

    --------------------siwuxie095 Hibernate 一对多操作 以客户和联系人为例,客户是一,联系人是多 即 一个客户里面有多个联系人,一个联系人只能属于一个客户 注意: ...

  7. c# 类中使用ResolveUrl

    类中使用ResolveUrl 1>获取当前page然后调用ResolveUrl System.Web.UI.Page page = HttpContext.Current.CurrentHand ...

  8. ChainOfResponsibilityPattern(23种设计模式之一)

    参考书籍:设计模式-可复用面向对象软件基础(黑皮书) 目的:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这些对象连成一条链,并沿这条链传递该请求,直到有一个对象处理它为止 ...

  9. Zedboard学习(三):PL下流水灯实验 标签: fpgazynqPL 2017-07-05 11:09 21人阅读 评论(0)

    zynq系列FPGA分为PS部分和PL部分. PL: 可编程逻辑 (Progarmmable Logic), 就是FPGA部分. PS: 处理系统 (Processing System) , 就是与F ...

  10. 使用python进行汉语分词-乾颐堂

    目前我常常使用的分词有结巴分词.NLPIR分词等等 最近是在使用结巴分词,稍微做一下推荐,还是蛮好用的. 一.结巴分词简介 利用结巴分词进行中文分词,基本实现原理有三: 基于Trie树结构实现高效的词 ...