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 相关文章推荐
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
Jan 01 Javascript
利用webqq协议使用python登录qq发消息源码参考
Apr 08 Javascript
js父页面与子页面不同时显示的方法
Oct 16 Javascript
微信小程序 实战实例开发流程详细介绍
Jan 05 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
Mar 03 Javascript
bootstrap table实现x-editable的行单元格编辑及解决数据Empty和支持多样式问题
Aug 10 Javascript
使用node.js对音视频文件加密的实例代码
Aug 30 Javascript
vue 实现数字滚动增加效果的实例代码
Jul 06 Javascript
vue中使用axios post上传头像/图片并实时显示到页面的方法
Sep 27 Javascript
小程序获取当前位置加搜索附近热门小区及商区的方法
Apr 08 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
Mar 14 Javascript
js事件机制----捕获与冒泡机制实例分析
May 22 Javascript
利用promise及参数解构封装ajax请求的方法
AJAX检测用户名是否存在的方法
Mar 24 #Javascript
js正则匹配markdown里的图片标签的实现
浅谈react路由传参的几种方式
Mar 23 #Javascript
一百多行代码实现react拖拽hooks
node中使用shell脚本的方法步骤
详解如何解决使用JSON.stringify时遇到的循环引用问题
You might like
php将数据库中的电话号码读取出来并生成图片
2008/08/31 PHP
php防止sql注入代码实例
2013/12/18 PHP
php中使用PHPExcel读写excel(xls)文件的方法
2014/09/15 PHP
WHOOPS PHP调试库的使用
2017/09/29 PHP
php实现获取近几日、月时间示例
2019/07/06 PHP
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
2014/04/04 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
2016/03/09 Javascript
jQuery实现的导航动画效果(附demo源码)
2016/04/01 Javascript
js删除Array数组中指定元素的两种方法
2016/08/03 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/10/05 Javascript
jQuery事件用法详解
2016/10/06 Javascript
jQuery实现鼠标跟随效果
2017/02/20 Javascript
layui中使用jquery控制radio选中事件的示例代码
2018/08/15 jQuery
2种在vue项目中使用百度地图的简单方法
2018/09/28 Javascript
vue中filters 传入两个参数 / 使用两个filters的实现方法
2019/07/15 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
2019/12/16 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
[01:01:22]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Python XML RPC服务器端和客户端实例
2014/11/22 Python
python中 logging的使用详解
2017/10/25 Python
python简单图片操作:打开\显示\保存图像方法介绍
2017/11/23 Python
Python3 加密(hashlib和hmac)模块的实现
2017/11/23 Python
Python安装模块的常见问题及解决方法
2018/02/05 Python
python3.6、opencv安装环境搭建过程(图文教程)
2019/11/05 Python
中国宠物用品商城:E宠商城
2016/08/27 全球购物
TobyDeals美国:在电子产品上获得最好的优惠和折扣
2019/08/11 全球购物
金鑫耀Java笔试题
2014/09/06 面试题
个人向公司借款协议书
2014/10/09 职场文书
优秀校长事迹材料
2014/12/24 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
apache基于端口创建虚拟主机的示例
2021/04/22 Servers
Java 通过手写分布式雪花SnowFlake生成ID方法详解
2022/04/07 Java/Android