node.js处理前端提交的GET请求


Posted in Javascript onAugust 30, 2019

前言:AJAX的盛行,使得浏览器与服务器之间的交互越来越强大,我们需要通过 HTTP 通信,并从中提取出请求的 URL 以及 GET/POST 参数。随后需要根据这些数据来执行相应的操作,从而实现前后端交互。 

一、获取GET请求流程

1、首先和以前一样,在server.js同目录下创建一个act文件夹,并在里面创建一个index1.html文件夹。index1.html代码为:

node.js处理前端提交的GET请求

<body>
<a href="index2.html" style="display:block; width:500px; height:300px; background:pink;"></a>
<form method="get" action="/get" style="padding:20px;"> <!-- method:提交方式是get,提交地址是/get -->
 名字:<input type="text" name="name"/><br />
 年龄:<input type="text" name="age" /><br />
 <input type="submit" value="提交"/>
</form>
</body>

2、先上server.js代码

var http = require('http');
var path = require('path');
var fs = require('fs');
var url = require('url');
 
//路由
var routes = {
 '/get':function(req,res){
 res.setHeader("Content-Type","text/plain; charset=utf-8");
 var name = req.query.name;
 var age = req.query.age;
 res.end('名字是:'+ name + ' 年龄是:'+age);
 //res.end( JSON.stringify(req.query)); 
 }
}
 
var server = http.createServer(function(req,res){
 
 var pathObj = url.parse(req.url, true);
 
 //新添加的处理路由的代码
 var handleFn = routes[pathObj.pathname];
 if(handleFn){
 req.query = pathObj.query; //获取get方式提交的数据
 handleFn(req, res); 
 }else{ //如果找不到字段,就查找静态文件
 var staticPath = path.join(__dirname,'act'); 
 var filePath = path.join(staticPath,pathObj.pathname);
 fs.readFile(filePath,'binary',function(err,fileContent){
 if(err){
 res.writeHead(404,"Not Found");
 res.end('<h1>404 Not Found!</h1>') 
 }else{
 res.writeHead(200,'ok');
 res.write(fileContent,'binary');
 res.end(); 
 }
 });
 }
});
 
server.listen(8080);
console.log('服务器已打开, 可以运行 http://localhost:8080');

解析代码 : 如果看过我前面写的"搭建静态服务器"的朋友应该就知道了,新增的代码就这几行。这样就简单了。

①、首先是创建个routes对象。然后在routes里面创建一个字段名为‘/get'的方法,用于稍后处理GET提交方式提交过来的数据。后续的操作也是在这里,例如:传数据给其他静态页面,或把数据存储到数据库,等等。

var routes = {
 '/get':function(req,res){
 res.setHeader("Content-Type","text/plain; charset=utf-8");
 var name = req.query.name;
 var age = req.query.age;
 res.end('名字是:'+ name + ' 年龄是:'+age);
 //res.end( JSON.stringify(req.query)); 
 }
}

②、首先通过pathObj.patnname获取到请求链接的url。然后在routes找是否存在这个“字段”,如果有,该字段的方法就赋值了给handleFn。最后通过pathObj.query获取到从get方式提交过来的数据,并执行该方法。

//新添加的处理路由的代码
 var handleFn = routes[pathObj.pathname];
 if(handleFn){
 req.query = pathObj.query; //获取get方式提交的数据
 handleFn(req, res); 
 }

3、运行服务器,并在浏览器中打开 http://localhost:8080/index1.html

node.js处理前端提交的GET请求

点击提交就会跳转到/get页面中了。

node.js处理前端提交的GET请求

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
10个基于Jquery的幻灯片插件教程
Oct 29 Javascript
JS 各种网页尺寸判断实例方法
Apr 18 Javascript
取得元素的左和上偏移量的方法
Sep 17 Javascript
JavaScript接口的实现三种方式(推荐)
Jun 14 Javascript
angular.js 路由及页面传参示例
Feb 24 Javascript
Bootstrap表单制作代码
Mar 17 Javascript
JavaScript代码执行的先后顺序问题
Oct 29 Javascript
vue.js,ajax渲染页面的实例
Feb 11 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
Dec 19 Javascript
微信小程序自定义单项选择器样式
Jul 25 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
Oct 29 Javascript
Vue自定义表单内容检查rules实例
Oct 30 Javascript
Node.js系列之连接DB的方法(3)
Aug 30 #Javascript
Node.js系列之发起get/post请求(2)
Aug 30 #Javascript
Node.js系列之安装配置与基本使用(1)
Aug 30 #Javascript
微信小程序实现写入读取缓存详解
Aug 30 #Javascript
VUE 自定义组件模板的方法详解
Aug 30 #Javascript
Jquery动态列功能完整实例
Aug 30 #jQuery
vue 兄弟组件的信息传递的方法实例详解
Aug 30 #Javascript
You might like
动漫定律:眯眯眼都是怪物!这些角色狠话不多~
2020/03/03 日漫
PHP Static延迟静态绑定用法分析
2016/03/16 PHP
php中static 静态变量和普通变量的区别
2016/12/01 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
2017/10/11 PHP
PHP实现随机数字、字母的验证码功能
2018/08/01 PHP
javascript 特性检测并非浏览器检测
2010/01/15 Javascript
jQuery ul标签下拉菜单演示代码
2010/12/11 Javascript
jquery动态加载js三种方法实例
2013/08/03 Javascript
理解jQuery stop()方法
2014/11/21 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
Node.js事件循环(Event Loop)和线程池详解
2015/01/28 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
2016/12/27 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
2017/01/12 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
jQuery使用正则验证15/18身份证的方法示例
2017/04/27 jQuery
mpvue全局引入sass文件的方法步骤
2019/03/06 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2018/05/16 Python
python  文件的基本操作 菜中菜功能的实例代码
2019/07/17 Python
Python线程条件变量Condition原理解析
2020/01/20 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
python有序查找算法 二分法实例解析
2020/02/18 Python
Pat McGrath Labs官网:世界上最有影响力的化妆师推出的彩妆品牌
2018/01/07 全球购物
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
《最后的姿势》教学反思
2014/02/27 职场文书
经营管理策划方案
2014/05/22 职场文书
学习考察心得体会
2014/09/04 职场文书
员工评语范文
2014/12/31 职场文书
医院营销工作计划
2015/01/16 职场文书
统计工作个人总结
2015/03/03 职场文书
大学生各类奖学金申请书
2019/06/24 职场文书
高中16字霸气押韵班级口号集锦!
2019/06/27 职场文书
JS封装cavans多种滤镜组件
2022/02/15 Javascript
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技