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模块模式分析
May 16 Javascript
javascript DOM编程实例(智播客学习)
Nov 23 Javascript
jQuery总体架构的理解分析
Mar 07 Javascript
JSON语法五大要素图文介绍
Dec 04 Javascript
Extjs grid添加一个图片状态或者按钮的方法
Apr 03 Javascript
JSONP之我见
Mar 24 Javascript
JS判断日期格式是否合法的简单实例
Jul 11 Javascript
jQuery插件ajaxFileUpload异步上传文件
Oct 19 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
May 02 Javascript
vue 项目 iOS WKWebView 加载
Apr 17 Javascript
浅谈ECMAScript 中的Array类型
Jun 10 Javascript
原生js+ajax分页组件
Jan 30 Javascript
利用promise及参数解构封装ajax请求的方法
AJAX检测用户名是否存在的方法
Mar 24 #Javascript
js正则匹配markdown里的图片标签的实现
浅谈react路由传参的几种方式
Mar 23 #Javascript
一百多行代码实现react拖拽hooks
node中使用shell脚本的方法步骤
详解如何解决使用JSON.stringify时遇到的循环引用问题
You might like
php格式化工具Beautify PHP小小BUG
2008/04/24 PHP
php数组函数序列之in_array() - 查找数组中是否存在指定值
2011/11/07 PHP
基于empty函数的判断详解
2013/06/17 PHP
PHP zip扩展Linux下安装过程分享
2014/05/05 PHP
基于PHP技术开发客服工单系统
2016/01/06 PHP
php5.4传引用时报错问题分析
2016/01/22 PHP
Yii 框架入口脚本示例分析
2020/05/19 PHP
html读出文本文件内容
2007/01/22 Javascript
Javascript操纵Cookie实现购物车程序
2007/02/15 Javascript
JQuery浮动DIV提示信息并自动隐藏的代码
2010/08/29 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
2014/05/02 Javascript
js完整倒计时代码分享
2016/09/18 Javascript
JavaScript高仿支付宝倒计时页面及代码实现
2016/10/21 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
JS字符串长度判断,超出进行自动截取的实例(支持中文)
2017/03/06 Javascript
微信小程序 图片宽度自适应的实现
2017/04/06 Javascript
Vue中父子组件通讯之todolist组件功能开发
2018/05/21 Javascript
JS数组Object.keys()方法的使用示例
2019/06/05 Javascript
vue项目中运用webpack动态配置打包多种环境域名的方法
2019/06/24 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
[02:17]快乐加倍!DOTA2食人魔魔法师至宝+迎霜节活动上线
2019/12/22 DOTA
用Python制作在地图上模拟瘟疫扩散的Gif图
2015/03/31 Python
Python制作数据导入导出工具
2015/07/31 Python
详解Python的循环结构知识点
2019/05/20 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
Django REST 异常处理详解
2020/07/15 Python
CSS3实现鼠标悬停显示扩展内容
2016/08/24 HTML / CSS
伦敦最有品味的百货:Liberty London
2016/11/12 全球购物
银行学习十八大感想
2014/01/11 职场文书
传播学专业毕业生自荐书
2014/07/01 职场文书
协会周年庆活动方案
2014/08/26 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
工人先锋号申报材料
2014/12/29 职场文书
请病假条范文
2015/08/17 职场文书
2016教师国培研修感言
2015/12/08 职场文书