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实现文本域写入字符时限定字数
Feb 12 Javascript
jquery 将当前时间转换成yyyymmdd格式的实现方法
Jun 01 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
Jun 24 Javascript
JavaScript中splice与slice的区别
May 09 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
Jul 07 Javascript
vue加载自定义的js文件方法
Mar 13 Javascript
深入浅出理解JavaScript闭包的功能与用法
Aug 01 Javascript
vue 2.1.3 实时显示当前时间,每秒更新的方法
Sep 16 Javascript
微信小程序实现日期格式化和倒计时
Nov 01 Javascript
js的Object.assign用法示例分析
Mar 05 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
Oct 28 Javascript
浅谈Vue static 静态资源路径 和 style问题
Nov 07 Javascript
利用promise及参数解构封装ajax请求的方法
AJAX检测用户名是否存在的方法
Mar 24 #Javascript
js正则匹配markdown里的图片标签的实现
浅谈react路由传参的几种方式
Mar 23 #Javascript
一百多行代码实现react拖拽hooks
node中使用shell脚本的方法步骤
详解如何解决使用JSON.stringify时遇到的循环引用问题
You might like
解析如何去掉CodeIgniter URL中的index.php
2013/06/25 PHP
一致性哈希算法以及其PHP实现详细解析
2013/08/24 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
2014/06/26 PHP
php短址转换实现方法
2015/02/25 PHP
php操作memcache缓存方法分享
2015/06/03 PHP
PHP实现的统计数据功能详解
2016/12/06 PHP
PHP使用函数用法详解
2018/09/30 PHP
爱恋千雪-US-AscII加密解密工具(网页加密)下载
2007/06/06 Javascript
详解JavaScript中void语句的使用
2015/06/04 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
2016/04/01 Javascript
AngularJS 自定义指令详解及示例代码
2016/08/17 Javascript
JavaScript实现购物车基本功能
2017/07/21 Javascript
ReactNative中使用Redux架构总结
2017/12/15 Javascript
Node.js创建HTTP文件服务器的使用示例
2018/05/11 Javascript
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
ES6知识点整理之对象解构赋值应用示例
2019/04/17 Javascript
通过实例了解JS执行上下文运行原理
2020/06/17 Javascript
[46:10]2014 DOTA2国际邀请赛中国区预选赛 CnB VS HGT
2014/05/21 DOTA
使用 Python 合并多个格式一致的 Excel 文件(推荐)
2019/12/09 Python
基于python修改srt字幕的时间轴
2020/02/03 Python
使用Python求解带约束的最优化问题详解
2020/02/11 Python
洲际酒店集团大中华区:IHG中国
2016/08/17 全球购物
法国家具及室内配件店:home24
2017/01/21 全球购物
全球最大的房车租赁市场:Outdoorsy
2018/09/19 全球购物
The North Face北面德国官网:美国著名户外品牌
2018/12/12 全球购物
开普敦通行证:Cape Town Pass
2019/07/18 全球购物
党校自我鉴定范文
2013/10/02 职场文书
初中政治教学反思
2014/01/17 职场文书
幼儿园中秋节活动方案2013
2014/01/29 职场文书
申请任职学生会干部自荐书范文
2014/02/13 职场文书
学校领导班子对照检查材料
2014/08/28 职场文书
帝企鹅日记观后感
2015/06/10 职场文书
导游词之南京夫子庙
2019/12/09 职场文书
mysql 如何获取两个集合的交集/差集/并集
2021/06/08 MySQL
Java基础之线程锁相关知识总结
2021/06/30 Java/Android
Vscode中SSH插件如何远程连接Linux
2022/05/02 Servers