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 相关文章推荐
JavaScript 继承详解(二)
Jul 13 Javascript
jQuery lazyload 的重复加载错误以及修复方法
Nov 19 Javascript
jquery实现初次打开有动画效果的网页TAB切换代码
Sep 06 Javascript
解析javascript瀑布流原理实现图片滚动加载
Mar 10 Javascript
Javascript中的对象和原型(二)
Aug 12 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
Nov 18 Javascript
js模糊查询实例分享
Dec 26 Javascript
js实现文字向上轮播功能
Jan 13 Javascript
jQuery+pjax简单示例汇总
Apr 21 jQuery
vue的注意规范之v-if 与 v-for 一起使用教程
Aug 04 Javascript
使用p5.js实现动态GIF图片临摹重现
Oct 23 Javascript
原生JavaScript实现滑动拖动验证的示例代码
Dec 06 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
杏林同学录(九)
2006/10/09 PHP
PHP中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
2015/07/01 PHP
php web环境和命令行环境下查找php.ini的位置
2019/07/17 PHP
JavaScript this 深入理解
2009/07/30 Javascript
Jquery进度条插件 Progress Bar小问题解决
2011/07/12 Javascript
js判断样式className同时增加class或删除class
2013/01/30 Javascript
JS Ajax请求如何防止重复提交
2016/06/13 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
JavaScript编码风格指南(中文版)
2016/08/26 Javascript
网页挂马方式整理及详细介绍
2016/11/03 Javascript
实例解析jQuery工具函数
2016/12/01 Javascript
详解VSCode配置启动Vue项目
2019/05/14 Javascript
jquery分页优化操作实例分析
2019/08/23 jQuery
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
2019/10/26 Javascript
js将URL网址转为16进制加密与解密函数
2020/03/04 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
2020/08/12 Javascript
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
小米5s微信跳一跳小程序python源码
2018/01/08 Python
python TF-IDF算法实现文本关键词提取
2019/05/29 Python
python脚本当作Linux中的服务启动实现方法
2019/06/28 Python
解决os.path.isdir() 判断文件夹却返回false的问题
2019/11/29 Python
python实现将视频按帧读取到自定义目录
2019/12/10 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
2020/02/28 Python
HTML5自定义属性的问题分析
2019/08/16 HTML / CSS
Gucci法国官方网站:意大利奢侈品牌
2018/07/25 全球购物
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
高中教师考核方案
2014/05/18 职场文书
学校师德承诺书
2014/05/23 职场文书
中国梦演讲稿开场白
2014/08/28 职场文书
2014酒店客房部工作总结
2014/12/16 职场文书
工作简报范文
2015/07/21 职场文书
《游戏公平》教学反思
2016/02/20 职场文书
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP
教你怎么用Python操作MySql数据库
2021/05/31 Python