-
实现效果前言:在百度贴吧,以及一些论坛中,当你回复或者评论完毕之后,从来没有见过页面重新刷新加载的效果,那么这个究竟是怎么做成的呢,也就是利用Ajax技术,页面无刷新效果,废话不多说,直接上代码。html部分:123456789101112131415161718<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.cssjs部分:12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788//———————————实现页面初始化数据 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————————————
-
前端编程中的AJAX服务器 什么是服务器:咱们的页面来源于服务器;实例(在phpnwo上面存放一个页面), 咱们把页面放在互联网的服务器上,就有了自己的网站了。 1.异步同步 生活中的同步: 生活中的异步: 在JavaScript语言中,同步和异步的概念刚好相反。 这JavaScript中同步就是:你不执行完上面的代码,那么下面的代码你就别执行;一步一步执行,这就是同步。 异步就是可以一块执行的代码; 进程的概念 进程≠程序 程序从开始到结束的一次执行过程叫做进程 一个进程当中,程序同时运行的多个分支,叫做线程 多线程异步执行,可以提高程序的效率 AJAX的重要性 在许多数企业看来AJAX的使用熟练程度 === 你的工作经验。 2.什么是AJAX ajax是前后端数据交互的重要手段 Ajax 全称为:“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML), 它并不是 JavaScript 的一种单一技术,而是利用了一系列交互式网页应用相关的技术所形 成的结合体。使用 Ajax,我们可以无刷新状态更新页面,并且实现异步提交,提升了用户体验。 一.Ajax 概述 Ajax 这个概念是由 JesseJamesGarrett 在 2005 年发明的。它本身不是单一技术,是一串 技术的集合,主要有: 1.JavaScript,通过用户或其他与浏览器相关事件捕获交互行为 2.XMLHttpRequest 对象,通过这个对象可以在不中断其它浏览器任务的情况下向服务 器发送请求; 3.服务器上的文件,以 XML、HTML 或 JSON 格式保存文本数据; 4.其它 JavaScript,解释来自服务器的数据(比如 PHP 从 MySQL 获取的数据)并将其 呈现到页面上。 由于 Ajax 包含众多特性,优势与不足也非常明显。优势主要以下几点: 1.不需要插件支持(一般浏览器且默认开启 JavaScript 即可); 2.用户体验极佳(不刷新页面即可获取可更新的数据); 3.提升 Web 程序的性能(在传递数据方面做到按需放松,不必整体提交); 4.减轻服务器和带宽的负担(将服务器的一些操作转移到客户端); 而 Ajax 的不足由以下几点: 1.不同版本的浏览器度 XMLHttpRequest 对象支持度不足(比如 IE5 之前); 2.前进、后退的功能被破坏(因为 Ajax 永远在当前页,不会几率前后页面); 3.搜索引擎的支持度不够(因为搜索引擎爬虫还不能理解 JS 引起变化数据的内容); 4.开发调试工具缺乏(相对于其他语言的工具集来说,JS 或 Ajax 调试开发少的可怜) 。 3.AJAX的使用 电话的接打顺序: 1.首先要有一个电话; 2.拨号; 3.说话; 4.听电话另一边的信息; //有一个电话:创建请求对象; 1.var AJAX=new XMLHttpRequest( ); //拨号:设置请求参数; 2.AJAX.open('get','data/test.json',true); 第一个参数:POST||GET POST和GET的区别 POST是发送数据,GET是接受数据; PSOT发送数据的安全性较好,而GET较差; POST发送数据不限制大小,而GET大小受限2~100k。 什么时候用GET和POST那:在数据获取时用GET方式,在操作数据时应使用POST方式。 第三个参数:当该boolean值为true时,服务器请求是异步进行的,也就是脚本执行send()方法后不等待 服务器的执行结果,而是继续执行脚本代码; 当该boolean值为false时,服务器请求是同步进行的,也就是脚本执行send()方法后等待 服务器的执行结果的返回,若在等待过程中超时,则不再等待,继续执行后面的脚本代码!3. ajax.onreadystatechange = function() { if (ajax.readyState == 4 && ajax.status == 200) { func_succ(ajax.responseText); } else { //alert("ajax faild readyState:"+ajax.readyState+" status:"+ajax.status); } };4.ajax.send(null); ajax.readyStatus 0 - (未初始化)还没有调用send()方法 1 - (载入)已调用send()方法,正在发送请求 2 - (载入完成)send()方法执行完成,已经接收到全部响应内容 3 - (交互)正在解析响应内容 4 - (完成)响应内容解析完成,可以在客户端调用了
上滑加载中
推荐直播
-
全面解析华为云EI-API服务:理论基础与实践应用指南
2024/11/29 周五 18:20-20:20
Alex 华为云学堂技术讲师
本期直播给大家带来的是理论与实践结合的华为云EI-API的服务介绍。从“主要功能,应用场景,实践案例,调用流程”四个维度来深入解析“语音交互API,文字识别API,自然语言处理API,图像识别API及图像搜索API”五大场景下API服务,同时结合实验,来加深开发者对API服务理解。
回顾中 -
企业员工、应届毕业生、在读研究生共探项目实践
2024/12/02 周一 19:00-21:00
姚圣伟 在职软件工程师 昇腾社区优秀开发者 华为云云享专家 HCDG天津地区发起人
大神带你一键了解和掌握LeakyReLU自定义算子在ONNX网络中应用和优化技巧,在线分享如何入门,以及在工作中如何结合实际项目进行学习
即将直播 -
昇腾云服务ModelArts深度解析:理论基础与实践应用指南
2024/12/03 周二 14:30-16:30
Alex 华为云学堂技术讲师
如何快速创建和部署模型,管理全周期AI工作流呢?本期直播聚焦华为昇腾云服务ModelArts一站式AI开发平台功能介绍,同时结合基于ModelArts 的实践性实验,帮助开发者从理论到实验更好地理解和使用ModelArts。
去报名
热门标签