jq-ajax与node后台的数据交互

引用段落,本次代码演示的只有留言板的添加信息功能
思想方法:通过填写内容点击提交按钮,触发add请求,后台返回成功信息并且将数据存在Map之中,在add success回调函数中再调用obj.getlLst()方法,发送get请求,后台返回Map的数据,前端通过遍历数据显示在ul之中。

html部分:

<!DOCTYPE>
 <html lang="zh-en">
 <head>
     <title>js实现简单留言板</title>
     <meta http-equiv="content-type" content="text/html;charset=utf-8">
     <link href="css/bootstrap.min.css" rel="stylesheet"/>
     <link href="css/demo.css" rel="stylesheet"/> 
     <script src="js/jquery-1.11.0.min.js"></script>
     <script type="text/javascript" src="js/ajax2.js"></script>
 </head> 
 <body> 
     <div class="container">
        <div class="form-horizontal">
            <div class="form-group">
                <label class="col-sm-1 control-label">昵称:</label>
                <div class="col-sm-11">
                    <input type="email" class="form-control name" id="inputEmail3" placeholder="请输入昵称">
                </div>
            </div>
            <div class="form-group">
                <label class="col-sm-1 control-label">留言:</label>
                <div class="col-sm-11">
                    <textarea class="form-control message" rows="5" placeholder="请输入内容"></textarea>
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-1 col-sm-11">
                    <button type="submit" class="btn btn-success submit">提交留言</button>
                </div>
            </div>
        </div>

        <div class="panel panel-primary">
            <div class="panel-heading">留言列表</div>
                <div class="panel-body">
                    <ul class="list-group messageList">

                    </ul>
                </div>
        </div>
    </div>
</body>
</html>

请求部分代码:

let obj ={
  //m:new Map(),
  init:function(){
    this.bind();
  },
  bind:function(){
        $(".container .submit").click(()=>{
            let _name = $(".name").val(),
                _msg = $(".message").val();
            if(_name =='' || _msg ==''){
                alert('请输入信息')
            }else {
                //this.m.set(_name,_msg);
                this.add(_name,_msg);
                $(".name,.message").val('');
            }
        });
    },
  add:function(name,msg){
    var self = this;
    $.ajax({
      type:'post',
      url:'http://localhost:3000/add',
      async:true,  //异步
      dataType:'json',
      data:{name:name,message:msg},
      success:function(res){  //后端返回的值
         if(res.code == '200'){
           obj.getList();
         }
      },
      error:function(){
        alert(1);
      }
    })
  },
  getList:function(name,msg){
        var self = this;
        $.ajax({
          type:'get',
          url:'http://localhost:3000/get',
          sync:true,
          dataType:'json',
          success:function(res){
            if(res.code == '200'){
             let str = '';
             for(let item of res.result){
              str += `<li class="list-group-item">${item.name}<span>说:</span>${item.message}</li>`
             };
             $(".messageList").html(str);
            }
          }
        })
  },
}

$(function(){
  obj.init();
})

node端代码:

引用段落,注意:运行node端需要安装中间件的依赖,通过提示缺失的包,使用cmd中npm install xxx即可,运行方法:node server-run.js(node文件的名称)

var connect = require('connect');  //创建连接
var bodyParser = require('body-parser');   //body解析
var m = new Map();
//map转为数组对象
function mapToArr(m){
    var arr = [];
    for(let [key,value] of m){
        arr.push({name:key,message:value})
    };
    return arr;
};

var app = connect()
    .use(bodyParser.json())   //JSON解析
    .use(bodyParser.urlencoded({extended: true}))
    //use()方法还有一个可选的路径字符串,对传入请求的URL的开始匹配。
    //use方法来维护一个中间件队列
    .use(function (req, res, next) {
        //跨域处理
        // Website you wish to allow to connect
        res.setHeader('Access-Control-Allow-Origin', '*');  //允许任何源
        // Request methods you wish to allow
        res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');  //允许任何方法
        // Request headers you wish to allow
        res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type,X-Session-Token');   //允许任何类型
        res.writeHead(200, {"Content-Type": "text/plain;charset=utf-8"});    //utf-8转码
        next();  //next 方法就是一个递归调用
    })
    .use('/add', function(req, res, next) {
          console.log(req.body);
      m.set(req.body.name,req.body.message);
      var data = {
        "code": "200",
        "msg": "success"
      };
      res.end(JSON.stringify(data));
      next();
        //m.set(req.body.name,req.body.message);
        //var data = {
        //  "code": "200",
        //  "msg": "success"
        //};
        //res.end(JSON.stringify(data));
        //next();
    //
    })
    .use('/get', function(req, res, next) {
        var data={
            "code": "200",
            "msg": "success",
            "result": mapToArr(m)
        };
        res.end(JSON.stringify(data));

        next();      //
    })
    .use('/get_query', function(req, res, next) {
        var data={
            "code": "200",
            "msg": "success",
            "result":{"id":1}
        };
        res.end(JSON.stringify(data));
        next();      //
    })
    .listen(3000);   //
console.log('Server started on port 3000.');

运行效果:

1.add请求成功:
图1.add请求

2.get请求成功:
图2.get请求

3.页面显示:
图3.页面渲染成功

4.node端打印:
图4.node端显示
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容