Node.js基础学习二之POST请求
本篇介绍下 Node.js post 请求
需求:
用户登录,前端界面输入用户名和密码,点击登录请求后台验证,根据后台反馈的信息做出响应
前端:
(1)使用form表单
(2)使用ajax异步请求
服务端:
(1)创建接口供前端请求
(2)获取数据并与固定数据 / 数据库进行对比验证,返回结果给前端
前端驱动后端,先贴前端代码
<form>
<label>
<span>用户名</span>
<input type="text" placeholder="用户名" id="userName">
</label>
<label>
<span>密码</span>
<input type="password" placeholder="密码" id="userPsw">
</label>
<input value="登录" id="btnPost" type="button">
</form>
css 样式(不好看就别用了,毕竟不是重点)
html{
font-size: 16px;
}
form {
position: absolute;
top: 30%;
left:;
right:;
display: block;
width: 25rem;
height: 25rem;
margin: 0 auto;
background: url("../img/icon-login.png") no-repeat ;
text-align: center;
font-size: 1.25rem;
box-shadow: 0 0 1.25rem #c5cace;
}
form label {
display: block;
width: 100%;
height: 8.75rem;
line-height: 8.75rem;
text-align: center;
vertical-align: middle;
}
label span {
display: inline-block;
width: 5rem;
text-align: right;
padding-right: 0.1rem;
}
label input {
height: 2.25rem;
border-radius: 0.1875rem;
border: none;
}
input[type=button],input[type=submit] {
color: #fff;
width: 3.75rem;
height: 2.5rem;
border: none;
border-radius:0.1875rem;
background: #4077bc;
cursor: pointer;
font-size: 1.25rem;
}
效果是这样的

(一)jQuery.ajax
$(function () {
var btnPost = $("#btnPost");
btnPost.click(function () {
$.ajax({
url:"http://localhost:8081",
type:"post",
data:{
name:$("#userName").val().trim(),
age:$("#userPsw").val().trim()
},
dataType:"json",
timeout:3000,
success: function (res) {
console.log(res);
},
error: function () {
alert("服务器连接失败!")
}
})
});
})
服务端代码
var http = require('http');
var qs = require('querystring');
http.createServer(function (req, res) {
var post = "";
req.on('data', function (chunk) {
post += chunk;
});
req.on('end', function () {
post = qs.parse(post);
console.log(post.name + "--" + post.age);
//res.end();
});
res.writeHead(200,{'Content-type':'text/plain;charset=utf-8'});
res.end("你好");
}).listen(8081);
运行服务端,点击登录,查看控制台会有输出

这个时候再看下浏览器控制台

这个是前端经常会遇到的跨域问题,很简单,使用 jsonp即可
ajax换成:
$.ajax({
url:"http://localhost:8081",
type:"post",
data:{
name:$("#userName").val().trim(),
age:$("#userPsw").val().trim()
},
dataType:"jsonp",
jsonpCallback:"callback",
timeout:3000,
success: function (res) {
console.log(res);
},
error: function () {
alert("服务器连接失败!")
}
})
服务端换成:
var http = require('http');
var qs = require('querystring');
var url = require('url');
http.createServer(function (req, res) {var parms = url.parse(req.url,true);
console.log(parms.query.userName + "<---||--->" + parms.query.userPsw);
res.writeHead(200,{'Content-type':'text/plain;charset=utf-8'});
res.end('callback(\'{\"status\": \"203\"}\')');
}).listen(8081);
前端控制台:

(二)表单
前端代码改变如下:
<form action="http://localhost:8081" method="POST" target="_blank">
<label>
<span>用户名</span>
<input type="text" placeholder="用户名" id="userName">
</label>
<label>
<span>密码</span>
<input type="password" placeholder="密码" id="userPsw">
</label>
<input value="登录" id="btnPost" type="submit">
</form>
服务端代码不变
点击登录效果如下:

这种情况界面的跳转是有后台指定的
学习阶段,不足之处请指教,谢谢!
Node.js基础学习二之POST请求的更多相关文章
- Node.js基础学习一之Get请求
本人从事的是前端开发,这段时间公司开发项目比较少所以就想着学点东西,然后就想到了Node.js ,跟着菜鸟教程学了点,不过我觉得最好的学习方法是带着需求来学习. 其实和服务端打交道无非就是能有一个可以 ...
- 进击Node.js基础(二)
一.一个牛逼闪闪的知识点Promise npm install bluebird 二.Promise实例 ball.html <!doctype> <!DOCTYPE html> ...
- Node.js基础学习四之注册功能
前言:在Node.js学习(二)和(三)中介绍了如何在Node.js 中获取登录的用户名和密码与数据库进行验证并返回数据给客户端 需求:实现注册功能 为了区分登录和注册是两个不同的请求,在端口后面加上 ...
- Node.js基础学习三之登录功能
本篇介绍Node.js访问数据库并返回数据给客户端 需求基于Node.js学习(二) 数据库请下载:user.sql 1.创建user 实体类(model-user.js) function User ...
- node.js 基础学习笔记3 -http
http模块,其中封装了一个高效的HTTP服务器和一个建议的HTTP客户端 http.server是一个基于事件的HTTP服务器 http.request则是一个HTTP客户端工具,用户向服务器发送请 ...
- node.js 基础学习 express安装使用
安装好nodeJs,我们需要使用命令行中安装express. 我这里默认将Node.js安装在C:\Program Files\nodCejs\盘中. 在保持联网的状态下,依次输入如下命令. npm ...
- node.js 基础学习笔记2
Module和Package是Node.js最重要的支柱. Node.j 提供require函数来调用其他模块,而且模块都是基于文件.模块和包区别是透明的,因此常常不作区分. 1.模块和文件一一对应. ...
- node.js 基础学习笔记1
1. node -v 查看版本 node -e --js代码 node --进入编辑模式 Ctrl+C 退出编译模式 var http=require('http') http.createServe ...
- node.js 基础学习
node.js 是一个 javaScript 运行环境,可以让 js 运行在服务端. 在 nodejs 环境下,可以运行 javascript 基本语法,可以在nodejs 中执行一些无法在浏览器端执 ...
随机推荐
- apache启动不了应对方法
原因一:80端口占用 例如IIS,另外就是迅雷.我的apache服务器就是被迅雷害得无法启用! 原因二:软件冲突 装了某些软件会使apache无法启动如Dr.com 你打开网络连接->TcpIp ...
- 安卓动态分析工具【Android】3D布局分析工具
https://blog.csdn.net/fancylovejava/article/details/45787729 https://blog.csdn.net/dunqiangjiaodemog ...
- 一篇搞懂python文件读写操作(r/r+/rb/w/w+/wb/a/a+/ab)
关于文件操作的几种常用方式,网上已有很多解说,内容很丰富,但也因此有些杂乱复杂.今天,我就以我个人的学习经验写一篇详细又易懂的总结文章,希望大家看完之后会有所收获. 一.核心功能 ‘r’ ...
- 基于hortonworks的大数据集群环境部署流水
一.ambari及HDP安装文件下载地址: 1.系统 操作系统:CentOS7 2.软件 本次安装采用最新版本: ambari-2.7.0.0 hdp-3.0.0.0 详细信息及下载地址如下: Amb ...
- 通过使用Web Workers,Web应用程序可以在独立于主线程的后台线程中,运行一个脚本操作。这样做的好处是可以在独立线程中执行费时的处理任务,从而允许主线程(通常是UI线程)不会因此被阻塞/放慢。
Web Workers API - Web API 接口参考 | MDNhttps://developer.mozilla.org/zh-CN/docs/Web/API/Web_Workers_API ...
- Express全系列教程之(八):session的基本使用
一.关于session session是另一种记录客户状态的机制,与cookie保存在客户端浏览器不同,session保存在服务器当中:当客户端访问服务器时,服务器会生成一个session对象,对象中 ...
- 把jmeter获取到的信息存到本地文件
1.jmeter使用正则表达式提取器,获取到响应信息,把获取到的响应信息写到本地文件 2.添加后置Bean Shell ,写入以下脚本 3.打开本地文件查看,写入成功 脚本内容如下: FileWrit ...
- group by 用法解析
group by 用法解析 group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表. SELECT子句中的列名必须为分组列或列函数.列函数对于GROUP BY子 ...
- T-SQL语言基础(2)之SQL Server体系结构
SQL Server 体系结构 SQL Server 实例 SQL Server 实例是指安装的一个 SQL Server 数据库引擎/服务.在同一台计算机上可以安装 SQL Server 的多个实例 ...
- js中创建命名空间的几种写法
在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() { return 'Hel ...