Ajax实现页面无刷新留言效果

在百度贴吧,以及一些论坛中,当你回复或者评论完毕之后,从来没有见过页面重新刷新加载的效果,那么这个究竟是怎么做成的呢,也就是利用Ajax技术,页面无刷新效果,废话不多说,直接上代码。

Posted in Javascript onMarch 24, 2021

实现效果

Ajax实现页面无刷新留言效果

html部分:

<div class="container">
 <h1 class="display-1">留言板</h1>
 <hr>
 <div id="loading">正在拼命加载数据.....</div>
 <ul id="messages" class="list-unstyled">
 
 </ul>
 <hr>
 <div class="form-group">
 <label for="txt_name">称呼:</label>
 <input class="form-control" id="txt_name" name="xxx" type="text">
 </div>
 <div class="form-group">
 <label for="txt_content">留言:</label>
 <textarea class="form-control" id="txt_content" cols="80" rows="10"></textarea>
 </div>
 <button type="button" id="btn_send" class="btn btn-primary">提交</button>
</div>

css部分:

css部分引用了bootstrap.css

js部分:

//———————————实现页面初始化数据 Start———————————
<script>
 //初始化,加载数据
 loadData();
 //获取已经存在的数据,加载到页面中
 /* 方式:GET 
 方法名: /getMsg
 参数:无
 返回: 所有留言[JSON] */
 function loadData() {
 //1.新建xhr 对象
 var xhr = new XMLHttpRequest();
 //2.设置请求参数和url
 xhr.open('GET', '/getMsg');
 //3.调用send方法 发送请求
 xhr.send();
 //4.接收一个参数 返回服务器的响应结构
 xhr.onload = function () {
 //JSON转换成数组
 var arr = JSON.parse(this.response);
 //开始遍历数组
 var str = '';
 arr.forEach(function (ele) {
  //将循环遍历出来的拼接到到一个字符串中,
  str += `<li class="media">
   <img class="mr-3" src="avatar.png" alt=${ele.name}>
   <div class="media-body">
    <h4>${ele.name}</h4>
    <p>${ele.content}</p>
   </div>
   </li>`;
 });
 //获取ul 将拼接的li 放置到ul 中
 var mes = document.getElementById('messages');
 mes.innerHTML = str;
 //清空默认显示 拼命加载中
 if (mes.childNodes.length != 0) {
  //获取拼命加载中id
  var loadMes = document.getElementById('loading');
  loadMes.innerHTML = "";
 }
 }
 }
 </script>
 //————————————实现页面初始化数据 end————————
 
 //————————实现页面添加留言功能 Start——————————
 <script>
 //添加一个发表留言的功能
 /* 
 方式:POST
 方法名:/addMsg 
 参数:name[string]
  content:[string]
 返回值:添加成功:true 
  添加失败:false
 */
 
 //新增的方法
 //获取提交按钮
 var btn_send = document.getElementById("btn_send");
 btn_send.onclick = function () {
 //1.新建xhr 对象
 var xhr = new XMLHttpRequest();
 //2.设置请求参数和url
 xhr.open('POST', '/addMsg');
 //3.设置请求头
 xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
 //获取称呼内容
 var txt_name = document.getElementById("txt_name");
 //获取留言内容
 var txt_content = document.getElementById("txt_content");
 //4.调用send方法 发送请求
 xhr.send('name=' + txt_name.value + '&content= ' + txt_content.value);
 //5.接收一个参数 返回服务器的响应结构
 xhr.onload = function () {
 if (this.response === "true") {
  //添加完毕之后,重新加载
  loadData();
  //添加完毕之后清空输入栏文本
  txt_name.value = txt_content.value = '';
 } else {
  alert("添加失败");
 }
 }
 }
 </script>
 //——————————实现页面添加留言功能 end————————————

 

Javascript 相关文章推荐
JavaScript与DropDownList 区别分析
Jan 01 Javascript
写了10年的Javascript也未必全了解的连续赋值运算
Mar 25 Javascript
基于JQuery 的消息提示框效果代码
Jul 31 Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
Jun 06 Javascript
图片翻转效果具体实现代码
Jan 09 Javascript
让IE8浏览器支持function.bind()方法
Oct 16 Javascript
JS使用eval()动态创建变量的方法
Jun 03 Javascript
JavaScript检测原始值、引用值、属性
Jun 20 Javascript
JavaScript中绑定事件的三种方式及去除绑定
Nov 05 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
Jul 23 Javascript
js实现表单项的全选、反选及删除操作示例
Jun 05 Javascript
Vue使用鼠标在Canvas上绘制矩形
Dec 24 Vue.js
利用promise及参数解构封装ajax请求的方法
AJAX检测用户名是否存在的方法
Mar 24 #Javascript
js正则匹配markdown里的图片标签的实现
浅谈react路由传参的几种方式
Mar 23 #Javascript
一百多行代码实现react拖拽hooks
node中使用shell脚本的方法步骤
详解如何解决使用JSON.stringify时遇到的循环引用问题
You might like
提升PHP执行速度全攻略(下)
2006/10/09 PHP
php adodb分页实现代码
2009/03/19 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
JS关键字变色实现思路及代码
2013/02/21 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
深入理解事件冒泡(Bubble)和事件捕捉(capture)
2016/05/28 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
在网页中插入百度地图的步骤详解
2016/12/02 Javascript
BootStrap实现轮播图效果(收藏)
2016/12/30 Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
2017/01/19 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
2017/03/06 Javascript
nodejs multer实现文件上传与下载
2017/05/10 NodeJs
vue组件父子间通信详解(三)
2017/11/07 Javascript
Webpack框架核心概念(知识点整理)
2017/12/22 Javascript
ES6 如何改变JS内置行为的代理与反射
2019/02/11 Javascript
详解如何提升JSON.stringify()的性能
2019/06/12 Javascript
梳理一下vue中的生命周期
2020/12/30 Vue.js
[43:14]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
使用django-suit为django 1.7 admin后台添加模板
2014/11/18 Python
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
windows下python虚拟环境virtualenv安装和使用详解
2019/07/16 Python
Python下使用Trackbar实现绘图板
2020/10/27 Python
GitHub上值得推荐的8个python 项目
2020/10/30 Python
购买限量版收藏品、珠宝和礼品:Bradford Exchange
2016/09/23 全球购物
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
Java Servlet的主要功能和作用是什么
2014/02/14 面试题
初三化学教学反思
2014/01/23 职场文书
升国旗仪式主持词
2014/03/19 职场文书
2014年留守儿童工作总结
2014/12/10 职场文书
JavaScript嵌入百度地图API的最详细方法
2021/04/16 Javascript
MySQL Router的安装部署
2021/04/24 MySQL
使用react+redux实现计数器功能及遇到问题
2021/06/02 Javascript
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
2021/06/29 Python