本篇介绍下 Node.js post 请求

需求:

用户登录,前端界面输入用户名和密码,点击登录请求后台验证,根据后台反馈的信息做出响应

前端:

(1)使用form表单

(2)使用ajax异步请求

服务端:

(1)创建接口供前端请求

(2)获取数据并与固定数据 / 数据库进行对比验证,返回结果给前端

前端驱动后端,先贴前端代码

  1. <form>
  2. <label>
  3. <span>用户名</span>
  4. <input type="text" placeholder="用户名" id="userName">
  5. </label>
  6. <label>
  7. <span>密码</span>
  8. <input type="password" placeholder="密码" id="userPsw">
  9. </label>
  10. <input value="登录" id="btnPost" type="button">
  11. </form>

css 样式(不好看就别用了,毕竟不是重点)

  1. html{
  2. font-size: 16px;
  3. }
  4. form {
  5. position: absolute;
  6. top: 30%;
  7. left:;
  8. right:;
  9. display: block;
  10. width: 25rem;
  11. height: 25rem;
  12. margin: 0 auto;
  13. background: url("../img/icon-login.png") no-repeat ;
  14. text-align: center;
  15. font-size: 1.25rem;
  16. box-shadow: 0 0 1.25rem #c5cace;
  17. }
  18. form label {
  19. display: block;
  20. width: 100%;
  21. height: 8.75rem;
  22. line-height: 8.75rem;
  23. text-align: center;
  24. vertical-align: middle;
  25. }
  26. label span {
  27. display: inline-block;
  28. width: 5rem;
  29. text-align: right;
  30. padding-right: 0.1rem;
  31. }
  32. label input {
  33. height: 2.25rem;
  34. border-radius: 0.1875rem;
  35. border: none;
  36. }
  37. input[type=button],input[type=submit] {
  38. color: #fff;
  39. width: 3.75rem;
  40. height: 2.5rem;
  41. border: none;
  42. border-radius:0.1875rem;
  43. background: #4077bc;
  44. cursor: pointer;
  45. font-size: 1.25rem;
  46. }

效果是这样的

(一)jQuery.ajax

  1. $(function () {
  2. var btnPost = $("#btnPost");
  3. btnPost.click(function () {
  4. $.ajax({
  5. url:"http://localhost:8081",
  6. type:"post",
  7. data:{
  8. name:$("#userName").val().trim(),
  9. age:$("#userPsw").val().trim()
  10. },
  11. dataType:"json",
  12. timeout:3000,
  13. success: function (res) {
  14. console.log(res);
  15. },
  16. error: function () {
  17. alert("服务器连接失败!")
  18. }
  19. })
  20. });
  21. })

服务端代码

  1. var http = require('http');
  2. var qs = require('querystring');
  3.  
  4. http.createServer(function (req, res) {
  5. var post = "";
  6. req.on('data', function (chunk) {
  7. post += chunk;
  8. });
  9. req.on('end', function () {
  10. post = qs.parse(post);
  11. console.log(post.name + "--" + post.age);
  12. //res.end();
  13. });
  14. res.writeHead(200,{'Content-type':'text/plain;charset=utf-8'});
  15. res.end("你好");
  16. }).listen(8081);

运行服务端,点击登录,查看控制台会有输出

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

这个是前端经常会遇到的跨域问题,很简单,使用 jsonp即可

ajax换成:

  1. $.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("服务器连接失败!")
    }
    })

服务端换成:

  1. var http = require('http');
  2. var qs = require('querystring');
  3. var url = require('url');
  4. http.createServer(function (req, res) {var parms = url.parse(req.url,true);
  5. console.log(parms.query.userName + "<---||--->" + parms.query.userPsw);
  6. res.writeHead(200,{'Content-type':'text/plain;charset=utf-8'});
  7. res.end('callback(\'{\"status\": \"203\"}\')');
  8. }).listen(8081);

前端控制台:

(二)表单

前端代码改变如下:

  1. <form action="http://localhost:8081" method="POST" target="_blank">
  2. <label>
  3. <span>用户名</span>
  4. <input type="text" placeholder="用户名" id="userName">
  5. </label>
  6. <label>
  7. <span>密码</span>
  8. <input type="password" placeholder="密码" id="userPsw">
  9. </label>
  10. <input value="登录" id="btnPost" type="submit">
  11. </form>

服务端代码不变

点击登录效果如下:

这种情况界面的跳转是有后台指定的

学习阶段,不足之处请指教,谢谢!

Node.js基础学习二之POST请求的更多相关文章

  1. Node.js基础学习一之Get请求

    本人从事的是前端开发,这段时间公司开发项目比较少所以就想着学点东西,然后就想到了Node.js ,跟着菜鸟教程学了点,不过我觉得最好的学习方法是带着需求来学习. 其实和服务端打交道无非就是能有一个可以 ...

  2. 进击Node.js基础(二)

    一.一个牛逼闪闪的知识点Promise npm install bluebird 二.Promise实例 ball.html <!doctype> <!DOCTYPE html> ...

  3. Node.js基础学习四之注册功能

    前言:在Node.js学习(二)和(三)中介绍了如何在Node.js 中获取登录的用户名和密码与数据库进行验证并返回数据给客户端 需求:实现注册功能 为了区分登录和注册是两个不同的请求,在端口后面加上 ...

  4. Node.js基础学习三之登录功能

    本篇介绍Node.js访问数据库并返回数据给客户端 需求基于Node.js学习(二) 数据库请下载:user.sql 1.创建user 实体类(model-user.js) function User ...

  5. node.js 基础学习笔记3 -http

    http模块,其中封装了一个高效的HTTP服务器和一个建议的HTTP客户端 http.server是一个基于事件的HTTP服务器 http.request则是一个HTTP客户端工具,用户向服务器发送请 ...

  6. node.js 基础学习 express安装使用

    安装好nodeJs,我们需要使用命令行中安装express. 我这里默认将Node.js安装在C:\Program Files\nodCejs\盘中. 在保持联网的状态下,依次输入如下命令. npm ...

  7. node.js 基础学习笔记2

    Module和Package是Node.js最重要的支柱. Node.j 提供require函数来调用其他模块,而且模块都是基于文件.模块和包区别是透明的,因此常常不作区分. 1.模块和文件一一对应. ...

  8. node.js 基础学习笔记1

    1. node -v 查看版本 node -e --js代码 node --进入编辑模式 Ctrl+C 退出编译模式 var http=require('http') http.createServe ...

  9. node.js 基础学习

    node.js 是一个 javaScript 运行环境,可以让 js 运行在服务端. 在 nodejs 环境下,可以运行 javascript 基本语法,可以在nodejs 中执行一些无法在浏览器端执 ...

随机推荐

  1. elasticsearch视频

    简单的集群管理 (1)快速检查集群的健康状况 es提供了一套api,叫做cat api,可以查看es中各种各样的数据 GET /_cat/health?v epoch timestamp cluste ...

  2. python全栈开发 * mysql * 180828

    一.mysql概述\s 查看当前自己的信息1.mysql就是用于管理我们的文件的一个软件;2.mysql有两个软件: 服务器软件: socket服务端 本地文件操作 解析指令(mysql语句) 客户端 ...

  3. dtFindNearestPolyQuery :: process

    dtFindNearestPolyQuery :: process(const dtMeshTile* tile, dtPoly** polys, dtPolyRef* refs, int count ...

  4. Eclipse中 maven 工程 pom 文件 出错

    解决: 在<plugins>  外层  添加  <pluginManagement> No marketplace entries found to handle mybati ...

  5. laravel读取excel

    $filePath = 'storage/exports/成员信息.xls'; Excel::load($filePath, function ($reader) {// $data = $reade ...

  6. [crypto][ipsec] 简述ESP协议的sequence number机制

    预备 首先提及一个概念叫重放攻击,对应的机制叫做:anti-replay https://en.wikipedia.org/wiki/Anti-replay IPsec协议的anti-replay特性 ...

  7. tcpdump我的交叉编译(mips)

    一.libpcap交叉编译 1.下载libpcap-1.8.1(http://www.tcpdump.org/) 2.解压 3.修改configure文件 a.注释掉 #if test -z &quo ...

  8. mysql8.0.13免安装版的安装配置详解

    一.下载 下载地址:https://dev.mysql.com/downloads/mysql/ 二.解压到某个目录,例如:D:/mysql/mysql-8.0.13-winx64 三.配置环境变量 ...

  9. PySe-007-解决“Chrome正在受到自动软件的控制”

    python使用selenium启动chrome的代码如下所示: #!/usr/local/bin/python # -*- coding: utf-8 -*- from selenium impor ...

  10. mac配置自带vim高亮显示

    查找/etc/.vimrc的内容,如果没有的话 新建~/vimrc文件,在文件中写入如下内容即可 set ai " auto indenting set history=100 " ...