Node.js如何响应Ajax的POST请求并且保存为JSON文件详解


Posted in Javascript onMarch 10, 2017

实现目的

使用D3.js开发的前端应用,用户与图交互更改图的内容后,如何在下一次加载的显示上一次最后交互的内容?

本文提供通过后端的Node.js程序提供一种最小化方案,作为参考。

开发环境

  • 后端:Node.js
  • Node.js模块:Express、body-parser、fs
  • 前端:JQuery

后端

1、安装nodejs,装好后用显示版本号确认是否安装好

node --version

2、新建一工程目录(文件夹),安装模块。

npm install express
npm install body-parser

Express 是一种Node.js Web 应用程序框架:http://expressjs.com/

bodyParser是用来解析http请求体:https://github.com/expressjs/body-parser

3、新建一个createServer.js

var express = require('express');
var bodyParser = require('body-parser');
var fs = require('fs');

var app = express();

// bodyParser.urlencoded解析form表单提交的数据
app.use(bodyParser.urlencoded({extended: false}));

// bodyParser.json解析json数据格式的
app.use(bodyParser.json());

app.post('/saveJSON',function(req, res){

 // 对象转换为字符串
 var str_json = JSON.stringify(req.body); 

 fs.writeFile('graph.json', str_json, 'utf8', function(){
  // 保存完成后的回调函数
  console.log("保存完成");
 });

});

app.listen(3000);

4、运行createServer.js

Node createServer.js

它会监视 http://127.0.0.1:3000 发送来的请求。

如果请求来自:http://127.0.0.1:3000/saveJSON,它就会在服务器目录下保存一个graph.json文件,文件的内容是客户端发送的post数据。

前端

// 创建一个对象
var person = {
 name: "lucy",
 age: 25
}

// 通过JQuery 发送POST请求,内容是person
$.post("http://127.0.0.1:3000/saveJSON",person,function(data, status){
 alert("Data: " + data + "\nStatus: " + status);
});

在浏览器加载后,后端控制台显示“保存完成”,这是我们在writeFile里写的回调函数。服务器目录下会多一个graph.json,证明结果正确。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
Jun 25 Javascript
Javascript处理DOM元素事件实现代码
May 23 Javascript
使用JavaScript和CSS实现文本隔行换色的方法
Nov 04 Javascript
jQuery插件实现静态HTML验证码校验
Nov 06 Javascript
浅析jQuery Mobile的初始化事件
Dec 03 Javascript
BootStrap实现手机端轮播图左右滑动事件
Oct 13 Javascript
100行代码理解和分析vue2.0响应式架构
Mar 09 Javascript
基于jQuery实现的Ajax 验证用户名唯一性实例代码
Jun 28 jQuery
angularjs请求数据的方法示例
Aug 06 Javascript
JavaScript实现点击出现子菜单效果
Feb 08 Javascript
js面向对象方式实现拖拽效果
Mar 03 Javascript
JavaScript前端面试扁平数据转tree与tree数据扁平化
Jun 14 Javascript
微信小程序 图片加载(本地,网路)实例详解
Mar 10 #Javascript
微信小程序 页面传值详解
Mar 10 #Javascript
详解Vue生命周期的示例
Mar 10 #Javascript
jQuery表格(Table)基本操作实例分析
Mar 10 #Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
Mar 10 #Javascript
微信小程序 出现47001 data format error原因解决办法
Mar 10 #Javascript
BootstrapValidator实现注册校验和登录错误提示效果
Mar 10 #Javascript
You might like
php下载文件源代码(强制任意文件格式下载)
2014/05/09 PHP
PHP yield关键字功能与用法分析
2019/01/03 PHP
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
通过隐藏iframe实现文件下载的js方法介绍
2014/02/26 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
JS组件Bootstrap Select2使用方法解析
2016/05/30 Javascript
Bootstrap学习笔记之环境配置(1)
2016/12/07 Javascript
Vue-cli中为单独页面设置背景色的实现方法
2018/02/11 Javascript
在angularJs中进行数据遍历的2种方法
2018/10/08 Javascript
vue实现的组件兄弟间通信功能示例
2018/12/04 Javascript
js针对图片加载失败的处理方法分析
2019/08/24 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
vue 实现tab切换保持数据状态
2020/07/21 Javascript
JS实现可以用键盘方向键控制的动画
2020/12/11 Javascript
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
[51:53]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第二场 1月24日
2021/03/11 DOTA
python中的break、continue、exit()、pass全面解析
2017/08/05 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
python3 字符串知识点学习笔记
2020/02/08 Python
Python实现代码块儿折叠
2020/04/15 Python
解决Keras自带数据集与预训练model下载太慢问题
2020/06/12 Python
DataFrame 数据合并实现(merge,join,concat)
2020/06/14 Python
python实现每天自动签到领积分的示例代码
2020/08/18 Python
Python Selenium库的基本使用教程
2021/01/04 Python
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
德国家具折扣店:POCO
2020/02/28 全球购物
W Hamond官网:始于1979年的钻石专家
2020/07/20 全球购物
寄语是什么意思
2014/04/10 职场文书
房地产活动策划方案
2014/05/14 职场文书
新郎婚礼致辞
2015/07/27 职场文书
运动会班级口号霸气押韵
2015/12/24 职场文书
Memcached介绍及php-memcache扩展安装
2021/04/01 PHP
使用logback实现按自己的需求打印日志到自定义的文件里
2021/08/30 Java/Android
CSS实现切角+边框+投影+内容背景色渐变效果
2021/11/01 HTML / CSS
JavaScript 定时器详情
2021/11/11 Javascript