关于ajax:一次Ajax请求未携带cookie问题排查

背景重写一个登录页面,登录接口是跨域接口,重写的页面登录胜利后进入页面报错,起因是申请后盾接口未携带cookie,然而通过老页面进行登录,进入页面后cookie能够失常携带,应用工具比照新老页面登录申请,request和response都是一样。 解决排除过以下可能性 在代码中进行cookie删除两个申请头不一样导致后果不一样零碎工夫设置谬误,导致cookie过期比照过两边的ajax申请代码,的确都是一样,甚至通过工具一一字节进行比照也是一样,最初发现在老页面一个暗藏的角落有一行这个代码 $.ajaxSetup({ dataType: "json", async: true, xhrFields: { withCredentials: true },});在新页面加上后问题解决。其中外围的就是withCredentials: true这个配置,通过查问官网文档,理解到如果跨域申请须要带上cookie必须设置改参数,官网上是这么形容的 The XMLHttpRequest.withCredentials property is a boolean value that indicates whether or not cross-site Access-Control requests should be made using credentials such as cookies, authorization headers or TLS client certificates. Setting withCredentials has no effect on same-origin requests. In addition, this flag is also used to indicate when cookies are to be ignored in the response. The default is false. XMLHttpRequest responses from a different domain cannot set cookie values for their own domain unless withCredentials is set to true before making the request. The third-party cookies obtained by setting withCredentials to true will still honor same-origin policy and hence can not be accessed by the requesting script through document.cookie or from response headers. ...

June 26, 2023 · 1 min · jiezi

关于ajax:使用Ajaxjs实现在指定位置插入html

1、写一个标签,在标签内增加上id属性。 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <!--在script中引入jQuery,不然不会失效的--> <script type="text/javascript" src="/webjars/jquery/3.6.3/jquery.min.js"></script></head><body> <div> <table align="center" border="1" cellspacing="0"> <!--比方在这个tr标签后插入HTML--> <tr id="admin"> <td>用户名</td> <td>受权门控</td> <td>门控所在场景</td> <td>勾销受权</td> </tr> </table> </div></body></html>2、应用Ajax向服务器发动申请, const xml = new XMLHttpRequest(); xml.onload = function(){ } xml.open("GET","http://localhost:8080/page/all"); xml.send();3、controller层向数据库发动查问申请,将查问到的记录的汇合转化为json格局,响应给浏览器。 @RestController@RequestMapping("/page")public class page { @Autowired SqlDatabaseDoorImpl sqlDatabaseDoor; @RequestMapping("/all") public String methodD0orAll() throws JsonProcessingException { //Door类是一个pojo类,这是一个应用Spring封装MyBatis框架的查询数据库的操作 List<Door> door = sqlDatabaseDoor.selectAllNOParam(); System.out.println(door); //将查问到的汇合转化为json格局 ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(door); System.out.println(json); return json; }}4、应用Ajax的回调函数,将数据库中读取到的数据展现在页面上 <script> const xml = new XMLHttpRequest(); xml.onload = function(){ if(xml.readyState==4&&xml.status==200){ //获取响应的数据 let vals = xml.responseText; console.log(vals); //将传入的字符串当做 JavaScript 代码进行执行 let jsonArr = eval(vals); console.log(jsonArr); let temp = ''; let div = document.querySelector("#admin")//获取id为admin的标签 console.log(div) for(let user of jsonArr){ console.log(user); temp = '<td>'+user.dr_userName+'</td>'+ '<td>'+user.dr_topic+'</td>'+ '<td>'+user.dr_scene+'</td>'+ '<td><a href="#" data-name='+user.dr_userName+' data-topic='+user.dr_topic+' onclick="del()">勾销</a></td>' console.log("temp="+temp); //afterend 将代码插入在id为admin的标签的下一处中央 //beforebegin 将代码插入在id为admin的标签的上一处中央 //afterbegin 将代码插入在id为admin的标签内的第一个地位 //beforeend 将代码插入在id为admin的标签内的最初一个地位 div.insertAdjacentHTML("afterend",temp); } } } xml.open("GET","http://localhost:8080/page/all"); xml.send();</script>能够看到,在指定的地位上曾经呈现了咱们后续插入的html。如果此时数据库中再插入一条数据。能够看到页面上就会持续插入html ...

April 10, 2023 · 1 min · jiezi

关于ajax:初见Ajax的认知与理解-二

AJAX(Asynchronous JavaScript And XML 异步的JavaScript和XML)上期说要新添一个需要:新增一个批改明码的接口,前端再减少一个批改明码的页面,申请和返回都应用JSON,要求复用数据库连贯,合并读取html文件。 1、新增一个批改明码的接口UserMapper接口局部: package com.example.mapper;import com.example.pojo.User;import org.apache.ibatis.annotations.Param;import java.util.List;public interface UserMapper { User selectAll(@Param("userName")String username, @Param("passWord")String password); int update(User user);}增加UserMapper的xml文件: <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.example.mapper.UserMapper"> <select id="selectAll" resultType="User"> select userName as username ,passWord as password from user where username = #{userName} and password=#{passWord}; </select> <update id="update"> update user set password = #{passWord} where username = #{userName}; </update></mapper>2、在前端新增一个批改明码的页面创立一个ajax-demo2.html <!DOCTYPE html><html><h1>批改明码</h1> <head> </head> <body> <form id="form2" action="http://localhost:8080/addUser3" method="post" accept-charset="UTF-8" onsubmit="return false"> <p>批改明码</p> <input type="text" name="userName" placeholder="用户名"> <input type="text" name="passWord" placeholder="明码"/> <input type="submit" value="提交" onclick="asd()"/> </form> </body></html>要实现从ajax-demo.html页面跳转到ajax-demo2.html上的性能,就得在ajax-demo.html上减少一个批改明码按钮并实现跳转。ajax-demo.html: ...

February 13, 2023 · 8 min · jiezi

关于ajax:初见Ajax的认知与理解-一

AJAX(Asynchronous JavaScript And XML 异步的JavaScript和XML)Ajax 的作用:1、与服务器进行数据交换:通过Ajax能够给服务器发送申请,并获取服务器响应的数据。2、应用Ajax和服务器进行通信,就能够应用HTML来替换JSP页面3、Ajax最重要的就是异步替换,能够在不从新加载整个页面的状况下,与服务器替换数据并更新局部网页的技术,比方,用户是否可校验。同步:大伙循序渐进,老老实实的期待申请服务器,服务器解决,响应客户端这个过程,一步一步走。异步:能够在期待申请服务器,服务器解决,响应客户端的过程中做些别的事件(用户感知不到这个过程,所有都悄咪咪的进行)。 那Ajax到底是怎么编写的呢?还是老规矩,给一个需要:通过URL传递数据,前端须要有两个输入框输出用户名和明码,用Ajax申请服务端。建一个数据库表(user),其中有两个字段,一个是Name字段一个是Password字段。提交,服务器接管,查询数据库。如果账号密码在数据库中存在,则提醒胜利,否则提醒失败。传参的形式必须是post,参数不容许呈现在url上。有了大抵流程,咱们就能开始入手啦! 1、在文本中填入数据点击提交要校验用户的用户名和明码那必定得先输出用户名和明码,还须要提交这个数据,那咱们能够用form表单来实现这个性能。创立HTML,命名为ajax-demo.html: <!DOCTYPE html><html> <head> </head> <body> <form id="form1" action="##" method="post" accept-charset="UTF-8" onsubmit="return false"> <p>校验</p> <input type="text" name="userName" id="txtUserName" placeholder="用户名"/> <input type="text" name="passWord" id="txtPassWord" placeholder="明码"/> <input type="submit" value="提交" onclick="fun()"/> </form> </body></html>表单是创立好了,那该怎么实现把数据提交到服务端上呢?能够看到我在表单里写了一个单击事件,执行fun()办法(onclick="fun()),这时就是咱们这篇的配角Ajax上场啦!2、发送Ajax申请,提交userName和passWord到服务端在应用Ajax之前,咱们先来理解一下Ajax的;两种申请形式:GET 申请和 POST 申请。GET申请和POST申请的用法很类似,都能够通过URL来传递参数。但POST申请还具备requestBody,能够通过 setRequestHeader() 来增加 HTTP 头,通过send来传递参数。如需将申请发送到服务器,咱们应用 XMLHttpRequest 对象的 open() 和 send() 办法。 open(method,url,async):method:申请的类型;GET 或 POST,url:文件在服务器上的地位,async:true(异步)或 false(同步)。 send(string):string:仅用于 POST 申请,因为GET申请没有requestBody。 当然,想应用open和send办法之前,首先得创立一个XMLHttpRequest对象,因为这两种办法是XMLHttpRequest对象中的两种办法。 在理解完这两种申请之后,咱们就持续实现这个需要吧。在这里我就应用POST向http://localhost:8080/addUser2发送申请。 function fun(){ const back = new XMLHttpRequest(); let name = {"userName":form1.userName.value,"passWord":form1.passWord.value} userName="+name+"&&passWord="+psd; let userName = JSON.stringify(name); alert(userName); back.open("POST","http://localhost:8080/addUser2"); //back.setRequestHeader("Content-type", "application/x-www-form-urlencoded");默认办法,固定格局 back.setRequestHeader("Content-type","application/json;charset=UTF-8");//能够发送json格局字符串 back.send(userName); }点击提交!通过浏览器的开发者工具,咱们能看到游览器以及胜利的向服务端提交了一个JSON格局的数据(JSON.stringify()办法将name转换成了JSON格局),接下来就是着手筹备服务端的接管了。3、服务端接管参数浏览器向服务器发送了post申请,因为这次POST申请增加了标头,所以在Servlet中request.getParameter()获取不了这个参数(如果没有增加标头,能够应用request.getParameter()获取浏览器提交的数据)。创立DemoApplication。 public class DemoApplication { @RequestMapping("/addUser2") public People addUser2( HttpServletRequest request, HttpServletResponse response) throws IOException { //String userName = request.getParameter("username"); //String passWord = request.getParameter("passWord"); String contentType = request.getContentType(); ServletInputStream is = request.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line=null; String result=""; while((line=br.readLine())!=null){ System.out.println(line); //{"username":"阿贾克斯","password":"123"} result =result + "\n" +line; } System.out.println(result); return null; }}咱们再次提交数据,来查看服务端是否收到了来自浏览器的数据。执行!如同并没有合乎预期呀,难不成是浏览器没有胜利提交数据吗?咱们开启浏览器的开发者工具查看网络:发现浏览器的确提交数据了,那为什么服务端没有收到来自浏览器提交的数据呢?那咱们再查看一下控制台:从“http://localhost:63342”拜访“http://localhost:8080”的XMLHttpRequest已被CORS策略阻止。这是什么起因?这就不得不说一下跨域问题了。跨域,指的是浏览器不能执行其余网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的平安限度。所谓同源是指,域名,协定,端口均雷同,只有有一个不同,就是跨域。能够看到两个URL的端口并不相同(一个端口号是63342,另一个端口号是8080),所以发送了跨域申请,被阻止了。那该怎么顺利完成申请呢?那不如把ajax-demo.html写在servlet里吧,那端口号就统一了。 ...

February 12, 2023 · 3 min · jiezi

关于ajax:节流防抖

/** 节流和防抖两者的区别防抖:避免抖动“你先抖着,啥时候停下了,在执行下一步”,做完某一个操作时,限值执行次数,屡次密集的触发只执行一次节流:节俭交互沟通,“别急,一个一个来,按工夫节奏来,插队有效”,进行某一个操作时, 限度执行频率,有节奏的执行节流关注“过程”,防抖关注“后果”别离用于什么场景防抖: 输入框,申请按钮节流:拖拽,滚动 */function debounce(callback, delay=300) { let timer = null; return () => { if(timer) { clearTimeout(timer); timer = setTimeout(() => { callback(); timer = null; }, delay)}}} function throttle(callback, delay=300) { let timer = null; return () => { if(timer) returntimer = setTimeout(() => { callback(); timer=null;}, delay)}}

August 30, 2022 · 1 min · jiezi

关于ajax:AjaxFetchAxios-三者之间的区别

三者都是用于网络申请,然而之间的维度不同 ajax 是一种技术统称,并不是一个具体的实现fetch 是原生推出的一个具体的API,与 XMLHttpRequeset 是同一纬度,都是用来实现 ajax 的,Fetch 语法更加简略、易用,且反对 Promiseaxios 是一个第三方的库,是基于原生API进行封装的文件。

August 30, 2022 · 1 min · jiezi

关于ajax:ajax和axios区别及优缺点

ajax: 1、什么是ajax Ajax是对原生XHR的封装,为了达到咱们逾越的目标,削减了对JsonP的反对。 异步的javascript和xml,ajax不是一门新技术,而是多种技术的组合,用于疾速的创立动静页面,可能实现无刷新更新数据从而进步用户体验。 属性:url、method、dataType、beforeSend、success、error… web前端全套视频学习材料:http://www.atguigu.com/download.shtml 2、ajax的原理? 由客户端申请ajax引擎,再由ajax引擎申请服务器,服务器作出一系列响应之后返回给ajax引擎,由ajax引擎决定将这个后果写入到客户端的什么地位。实现页面无刷新更新数据。 3、外围对象? XMLHttpRequest 4、ajax优缺点? 长处: 1、无刷新更新数据 2、异步与服务器通信 3、前端和后端负载平衡 4、基于规范被广泛支持 5、界面与利用拆散 毛病: 1、ajax不能应用Back和history性能,即对浏览器机制的毁坏 2、平安问题 ajax裸露了与服务器交互的细节 3、对收索引擎的反对比拟弱 4、毁坏程序的异样解决机制 5、违反URL和资源定位的初衷 6、ajax不能很好的反对挪动设施 7、太多客户端代码造成开发上的老本 5、Ajax实用场景 1、表单驱动的交互 2、深层次的树的导航 3、疾速的用户与用户间的交换响应 4、相似投票、yes/no等无关痛痒的场景 5、对数据进行过滤和操纵相干数据的场景 6、一般的文本输出提醒和主动实现的场景6、Ajax不实用场景 1、局部简略的表单 2、搜寻 3、根本的导航 4、替换大量的文本 5、对出现的操纵 7、代码 $.ajax({ type: 'POST', url: url, data: data, dataType: dataType, success: function () {}, error: function () {}}); 8、ajax申请的五个步骤 1、创立XMLHttpRequest异步对象 2、设置回调函数 3、应用open办法与服务器建设连贯 4、向服务器发送数据 5、在回调函数中针对不同的响应状态进行解决 axios: 1、axios是什么 Axios 是一个基于 Promise 的 HTTP 库,能够用在浏览器和 node.js 中;是申请资源的模块;通过promise对ajax的封装。 属性:url、method、data、responseType、.then、.catch…2、axios有那些个性? ...

April 26, 2022 · 1 min · jiezi

关于ajax:快速带你了解-Ajax-技术

概述Ajax(Asynchronous JavaScript and XML,即异步 JavaScript 和 XML)技术用于与服务器替换数据并刷新局部页面,实现更好的用户体验。 Ajax 的外围对象是 XMLHttpRequest,通过 XMLHttpRequest 能够在不刷新页面的状况下申请特定 URL,获取数据。由微软实现并在 IE5 中反对,用于执行异步网络申请。尽管 Ajax 是 Asynchronous JavaScript+XML 的缩写,但 Ajax 通信与数据格式无关,并不一定是 XML 格局。甚至反对 HTTP 以外的协定(如 file:// 和 FTP),只管可能受到更多出于平安等起因的限度。 应用 Ajax 须要几个步骤: 创立 XMLHttpRequest 对象。 收回 HTTP 申请。 接管服务器传回的数据。 更新网页数据。 总之,Ajax 就是通过 XMLHttpRequest 对象收回 HTTP 申请,失去服务器响应并解决。 Ajax 全套学习材料支付链接:http://www.atguigu.com/download.shtml 创立 XMLHttpRequest在所有古代浏览器都能够通过 XMLHttpRequest 构造函数创建对象: let xhr = new XMLHttpRequest();而在老版本 IE5 和 IE6 中应用 ActiveX 对象创立: let xhr = new ActiveXObject("Microsoft.XMLHTTP");应用 XMLHttpRequest创建对象后,须要应用 XMLHttpRequest 对象调用 open(type, url, async) 办法并设置三个参数: ...

April 19, 2022 · 6 min · jiezi

关于ajax:ajax跨域session丢失问题

ajax 跨域时session失落了!!! 解决办法:首先我 Google 了一下这个问题的起因,我找到了这个: (1)Access-Control-Allow-Origin该字段是必须的。它的值要么是申请时Origin字段的值,要么是一个*,示意承受任意域名的申请。(2)Access-Control-Allow-Credentials该字段可选。它的值是一个布尔值,示意是否容许发送Cookie。默认状况下,Cookie不包含在CORS申请之中。设为true,即示意服务器明确许可,Cookie能够蕴含在申请中,一起发给服务器。这个值也只能设为true,如果服务器不要浏览器发送Cookie,删除该字段即可。(3)Access-Control-Expose-Headers该字段可选。CORS申请时,XMLHttpRequest对象的getResponseHeader()办法只能拿到6个根本字段:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。如果想拿到其余字段,就必须在Access-Control-Expose-Headers外面指定。下面的例子指定,getResponseHeader('FooBar')能够返回FooBar字段的值。3.2 withCredentials 属性下面说到,CORS申请默认不发送Cookie和HTTP认证信息。如果要把Cookie发到服务器,一方面要服务器批准,指定Access-Control-Allow-Credentials字段。Access-Control-Allow-Credentials: true------ 阮一峰的网络日志 我写了一个 demo 来试验这个办法: 前端代码 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"><title>Title</title><script src="https://cdn.bootcss.com/jquery/3.0.0/jquery.min.js"></script></head><body>name: <input type="text" name="inputTest" value="">password: <input type="password" name="pwd" id="pwd" value=""><button id="but">提交</button></body><script> $("button").click(function () { var names=$("input[name='inputTest']").val(); var pwds=$("input[name='pwd']").val(); var url = 'http://example.com/demo/test.php'; var postData = {'name':names, 'pwd':pwds}; $.ajax({ type: "POST", url: url, data:postData, dataType: 'jsonp', jsonp:'callback', xhrFields: { withCredentials: true }, crossDomain: true, success:function(res){ console.log(res.name) }, error:function(){} })});</script></html> 后端 php 代码:(test.php) <?php//简略测试上述办法header("Access-Control-Allow-Creadentials: true");header("Access-Control-Allow-Origin: http://shili.com");$name = $_REQUEST['name'];$pwd = $_REQUEST['pwd'];session_start();$_SESSION['name'] = $name;$data = ['name' => $_SESSION['name'], 'pwd' => $pwd];$res = json_encode($data);$callback = $_GET['callback'];echo $callback . "($res)";?> ...

April 8, 2022 · 1 min · jiezi

关于ajax:移动端ajax响应status为0

在h5挪动端线上调接口申请发现申请一段时间之后接口返回谬误: 通过定位发现响应信息为服务器Nginx报504网关谬误,所以进入了ajax的error回调: 查看vconsole的响应: ajax status 为 0可能的起因:1.后端服务器超时,须要在服务器上配置更长的超时工夫(很可能)2.跨域(不太可能)3.网络中断,网络环境很差(有可能)4.前端设置了超时(不太可能)5.ajax辨认不了响应体(很可能)尝试解决办法ajax 加xhrFields: { responseType: "text" }

February 26, 2022 · 1 min · jiezi

关于ajax:2022AJAX常见面试题分享

1、什么是AJAX,为什么要应用Ajax(请谈一下你对Ajax的意识) 什么是ajax: AJAX是“Asynchronous JavaScript and XML”的缩写。他是指一种创立交互式网页利用的网页开发技术。Ajax蕴含下列技术:基于web规范(standards-basedpresentation)XHTML+CSS的示意;应用 DOM(Document ObjectModel)进行动态显示及交互;应用 XML 和 XSLT 进行数据交换及相干操作;应用 XMLHttpRequest 进行异步数据查问、检索;应用 JavaScript 将所有的货色绑定在一起。 为什么要用ajax: Ajax应用程序的劣势在于: 通过异步模式,晋升了用户体验 优化了浏览器和服务器之间的传输,缩小不必要的数据往返,缩小了带宽占用 Ajax引擎在客户端运行,承当了一部分原本由服务器承当的工作,从而缩小了大用户量下的服务器负载。 2、AJAX最大的特点是什么。 Ajax能够实现动静不刷新(部分刷新)就是能在不更新整个页面的前提下保护数据。这使得Web应用程序更为迅捷地回应用户动作,并防止了在网络上发送那些没有扭转过的信息。 3、Ajax的实现流程是怎么的? (1)创立XMLHttpRequest对象,也就是创立一个异步调用对象.(2)创立一个新的HTTP申请,并指定该HTTP申请的办法、URL及验证信息.(3)设置响应HTTP申请状态变动的函数.(4)发送HTTP申请.(5)获取异步调用返回的数据.(6)应用JavaScript和DOM实现部分刷新. 4、Ajax 解决浏览器缓存问题? 1、在ajax发送申请前加上 anyAjaxObj.setRequestHeader("If-Modified-Since","0")。2、在ajax发送申请前加上 anyAjaxObj.setRequestHeader("Cache-Control","no-cache")。3、在URL前面加上一个随机数: "fresh=" + Math.random();。4、在URL前面加上工夫戳:"nowtime=" + new Date().getTime();。5、如果是应用jQuery,间接这样就能够了 $.ajaxSetup({cache:false})。这样页面的所有ajax都会执行这条语句就是不须要保留缓存记录。  5、请介绍一下XMLhttprequest对象。 Ajax的外围是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种反对异步申请的技术。简而言之,XmlHttpRequest使您能够应用JavaScript向服务器提出申请并解决响应,而不阻塞用户。通过XMLHttpRequest对象,Web开发人员能够在页面加载当前进行页面的部分更新。 6、AJAX技术体系的组成部分有哪些。 HTML,css,dom,xml,xmlHttpRequest,javascript 7、AJAX利用和传统Web利用有什么不同。 在传统的Javascript编程中,如果想得到服务器端数据库或文件上的信息,或者发送客户端信息到服务器,须要建设一个HTML form而后GET或者POST数据到服务器端。用户须要点击”Submit”按钮来发送或者承受数据信息,而后期待服务器响应申请,页面从新加载。因为服务器每次都会返回一个新的页面, 所以传统的web利用有可能很慢而且用户交互不敌对。应用AJAX技术, 就能够使Javascript通过XMLHttpRequest对象间接与服务器进行交互。通过HTTP Request, 一个web页面能够发送一个申请到web服务器并且承受web服务器返回的信息(不必从新加载页面),展现给用户的还是通一个页面,用户感觉页面刷新,也看不到到Javascript后盾进行的发送申请和承受响应。 8、AJAX申请总共有多少种CALLBACK。 Ajax申请总共有八种CallbackonSuccessonFailureonUninitializedonLoadingonLoadedonInteractiveonCompleteonException 9.Ajax和javascript的区别。 javascript是一种在浏览器端执行的脚本语言,Ajax是一种创立交互式网页利用的开发技术 ,它是利用了一系列相干的技术其中就包含javascript。Javascript是由网景公司开发的一种脚本语言,它和sun公司的java语言是没有任何关系的,它们类似的名称只是一种行销策略。在个别的web开发中,javascript是在浏览器端执行的,咱们能够用javascript管制浏览器的行为和内容。在 Ajax利用中信息是如何在浏览器和服务器之间传递的通过XML数据或者字符串 10、在浏览器端如何失去服务器端响应的XML数据。 XMLHttpRequest对象的responseXMl属性  11、 XMLHttpRequest对象在IE和Firefox中创立形式有没有不同。 有,IE中通过new ActiveXObject()失去,Firefox中通过newXMLHttpRequest()失去 12、介绍一下XMLHttpRequest对象的罕用办法和属性。 open(“method”,”URL”) 建设对服务器的调用,第一个参数是HTTP申请    形式能够为GET,POST或任何服务器所反对的您想调用的形式。 第二个参数是申请页面的URL。    send()办法,发送具体申请    abort()办法,进行以后申请    readyState属性   申请的状态 有5个可取值0=未初始化 ,1=正在加载    2=以加载,3=交互中,4=实现    responseText 属性  服务器的响应,示意为一个串    reponseXML 属性 服务器的响应,示意为XML    status   服务器的HTTP状态码,200对应ok  400对应not found ...

January 19, 2022 · 1 min · jiezi

关于ajax:AJAX工作原理及其优缺点

AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创立交互式网页利用的网页开发技术。它应用: 应用XHTML+CSS来标准化出现; 应用XML和XSLT进行数据交换及相干操作; 应用XMLHttpRequest对象与Web服务器进行异步数据通信; 应用Javascript操作Document Object Model进行动态显示及交互; 应用JavaScript绑定和解决所有数据。 与传统的web利用比拟传统的Web利用交互由用户触发 一个HTTP申请到服务器,服务器对其进行解决后再返回一个新的HTHL页到客户端, 每当服务器解决客户端提交的申请时,客户都只能闲暇期待,并且哪怕只是一次很小的交互、只需从服务器端失去很简略的一个数据,都要返回一个残缺的HTML 页,而用户每次都要浪费时间和带宽去从新读取整个页面。这个做法节约了许多带宽,因为每次利用的交互都须要向服务器发送申请,利用的响应工夫就依赖于服务 器的响应工夫。这导致了用户界面的响应比本地利用慢得多。 与此不同,AJAX利用能够仅向服务器发送并取回必须的数据,它应用SOAP或其它一些 基于XML的Web Service接口,并在客户端采纳JavaScript解决来自服务器的响应。因为在服务器和浏览器之间替换的数据大量缩小,后果咱们就能看到响应更快的利用。前端培训同时很多的解决工作能够在发出请求的客户端机器上实现,所以Web服务器的解决工夫也缩小了。 AJAX的工作原理Ajax的工作原理相当于在用户和服 务器之间加了—个中间层(AJAX引擎),使用户操作与服务器响应异步化。并不是所有的用户申请都提交给服务器,像—些数据验证和数据处理等都交给 Ajax引擎本人来做, 只有确定须要从服务器读取新数据时再由Ajax引擎代为向服务器提交申请。 Ajax其外围有 JavaScript、XMLHTTPRequest、DOM对象组成,通过XmlHttpRequest对象来向服务器发异步申请,从服务器取得数据, 而后用JavaScript来操作DOM而更新页面。这其中最要害的一步就是从服务器取得申请数据。 AJAX的优缺点(1).AJAX的长处1.无刷新更新数据。AJAX最大长处就是能在不刷新整个页面的前提下与服务器通信保护数据。这使得Web应用程序更为迅捷地响应用户交互,并防止了在网络上发送那些没有扭转的信息,缩小用户等待时间,带来十分好的用户体验。 2.异步与服务器通信。AJAX应用异步形式与服务器通信,不须要打断用户的操作,具备更加迅速的响应能力。优化了Browser和Server之间的沟通,缩小不必要的数据传输、工夫及升高网络上数据流量。 3.前端和后端负载平衡。AJAX能够把以前一些服务器累赘的工作转嫁到客户端,利用客户端闲置的能力来解决,加重服务器和带宽的累赘,节约空间和宽带租用老本。并且加重服务器的累赘,AJAX的准则是“按需取数据”,能够最大水平的缩小冗余申请和响应对服务器造成的累赘,晋升站点性能。 4.基于规范被广泛支持。AJAX 基于标准化的并被广泛支持的技术,不须要下载浏览器插件或者小程序,但须要客户容许JavaScript在浏览器上执行。随着Ajax的成熟,一些简化 Ajax应用办法的程序库也相继问世。同样,也呈现了另一种辅助程序设计的技术,为那些不反对JavaScript的用户提供代替性能。 5.界面与利用拆散。Ajax使WEB中的界面与利用拆散(也能够说是数据与出现拆散),有利于分工合作、缩小非技术人员对页面的批改造成的WEB应用程序谬误、提高效率、也更加实用于当初的公布零碎。 (2).AJAX毛病1.AJAX 干掉了Back和History性能,即对浏览器机制的毁坏:在动静更新页面的状况下,用户无奈回到前一个页面状态,因为浏览器仅能记忆历史记录中的动态页面。一个被残缺读入的页面与一个曾经被动静批改过的页面之间的差异十分奥妙;用户通常会心愿单击后退按钮可能勾销他们的前一次操作,然而在Ajax应用程序中,这将无奈实现的 ,后退按钮是一个规范的web站点的重要性能,然而它没法和js进行很好的单干。 2.AJAX的平安问题:AJAX技术给用户带来很好的用户体验的同时也对IT企业带来了新的平安威逼,Ajax技术就如同对企业数据建设了一个间接通道。深圳前端培训这使得开发者在不经意间会裸露比以前更多的数据和服务器逻辑。Ajax的逻辑能够对客户端的平安扫描技术暗藏起来,容许黑客从远端服务器上建设新的攻打。还有Ajax也难以避免一些已知的平安弱点,诸如跨站点脚步攻打、SQL注入攻打和基于Credentials的安全漏洞等等 3.对搜索引擎反对较弱:对搜索引擎的反对比拟弱。如果使用不当,AJAX会增大网络数据的流量,从而升高整个零碎的性能。 4.毁坏程序的异样解决机制:至多从目前看来,像Ajax.dll,Ajaxpro.dll这些Ajax框架是会毁坏程序的异样机制的 5.违反URL和资源定位的初衷:我给你一个URL地址,如果采纳了Ajax技术,兴许你在该URL地址上面看到的和我在这个URL地址下看到的内容是不同的。这个和资源定位的初衷是相背离的 6.AJAX不能很好反对挪动设施:一些手持设施(如手机、PDA等)当初还不能很好的反对Ajax 7.客户端过肥,太多客户端代码造成开发上的老本:编写简单、容易出错 ;冗余代码比拟多(层层蕴含js文件是AJAX的通病,再加上以往的很多服务端代码当初放到了客户端);毁坏了Web的原有规范。 8.如果用户禁用了JS,网站就取不到数据。 AJAX留神点及实用和不实用场景1.留神点Ajax 开发时,网络提早——即用户发出请求到服务器收回响应之间的距离——须要慎重考虑。不给予用户明确的回应,没有失当的预读数据,或者对 XMLHttpRequest的不失当解决,都会使用户感到提早,这是用户不心愿看到的,也是他们无奈了解的。通常的解决方案是,应用一个可视化的组件来 通知用户零碎正在进行后盾操作并且正在读取数据和内容。 2.Ajax实用场景 <1>.表单驱动的交互<2>.深层次的树的导航<3>.疾速的用户与用户间的交换响应<4>.相似投票、yes/no等无关痛痒的场景<5>.对数据进行过滤和操纵相干数据的场景<6>.一般的文本输出提醒和主动实现的场景 3.Ajax不实用场景 <1>.局部简略的表单<2>.搜寻<3>.根本的导航<4>.替换大量的文本<5>.对出现的操纵

January 17, 2022 · 1 min · jiezi

关于ajax:爪哇学习笔记AJAXFetch-API

什么是AJAX?AJAX是异步的JavaScript和XML(Asynchronous JavaScript And XML)。简略点说,就是应用 XMLHttpRequest 对象与服务器通信。 它能够应用JSON,XML,HTML和text文本等格局发送和接收数据。AJAX最吸引人的就是它的“异步”个性,也就是说它能够在不从新刷新页面的状况下与服务器通信,替换数据,或更新页面。通过交互式网站和古代 Web 规范,AJAX正在逐步被 JavaScript 框架中的函数和官网的 Fetch API 规范取代。 XMLHTTPRequestXMLHttpRequest(XHR)对象用于与服务器交互。通过 XMLHttpRequest 能够在不刷新页面的状况下申请特定 URL,获取数据。这容许网页在不影响用户操作的状况下,更新页面的部分内容。XMLHttpRequest在AJAX编程中被大量应用。let xhr = new XMLHttpRequest();xhr.open('GET', 'http://domain/service');// request state change eventxhr.onreadystatechange = function () { // request completed? if (xhr.readyState !== 4) return; if (xhr.status === 200) { // request successful - show response console.log(xhr.responseText); } else { // request error console.log('HTTP error', xhr.status, xhr.statusText); }};// xhr.timeout = 3000; // 3 seconds// xhr.ontimeout = () => console.log('timeout', xhr.responseURL);// progress事件能够报告长时间运行的文件上传// xhr.upload.onprogress = p => {// console.log(Math.round((p.loaded / p.total) * 100) + '%');// }// start requestxhr.send();全副readyState状态值都在 XMLHTTPRequest.readyState,如下也是: ...

January 15, 2022 · 3 min · jiezi

关于ajax:Ajax基础原理及使用教程来自动力节点

首先,咱们来回顾下ajax是什么? Ajax = 异步 JavaScript 和XML。Ajax是一种用于创立疾速动静网页的技术。 通过在后盾与服务器进行大量数据交换,Ajax能够使网页实现异步更新。这意味着能够在不从新加载整个网页的状况下,对网页的某局部进行更新。 传统的网页(不应用 Ajax)如果须要更新内容,必须重载整个网页面 后面谈到ajax是什么,其次要也就是异步提交,大家是否晓得同步和异步提交的区别吗? 同步提交:当用户发送申请时,以后页面不能够应用,服务器响应页面到客户端,响应实现,用户才能够应用页面。异步提交:当用户发送申请时,以后页面还能够持续应用,当异步申请的数据响应给页面,页面把数据显示进去 。Ajax工作原理客户端发送申请,申请交给xhr,xhr把申请提交给服务,服务器进行业务解决,服务器响应数据交给xhr对象,xhr对象接收数据,由javascript把数据写到页面上,如下图所示: Ajax申请的五个步骤://第一步,创立XMLHttpRequest对象var xmlHttp = new XMLHttpRequest();function CommentAll() {//第二步,注册回调函数xmlHttp.onreadystatechange =callback1;//{ // if (xmlHttp.readyState == 4) // if (xmlHttp.status == 200) { // var responseText = xmlHttp.responseText; // } //}//第三步,配置申请信息,open(),get //get申请下参数加在url后,.ashx?methodName = GetAllComment&str1=str1&str2=str2 xmlHttp.open("post", "/ashx/myzhuye/Detail.ashx?methodName=GetAllComment", true); //post申请下须要配置申请头信息 //xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //第四步,发送申请,post申请下,要传递的参数放这 xmlHttp.send("methodName = GetAllComment&str1=str1&str2=str2");//"}//第五步,创立回调函数function callback1() { if (xmlHttp.readyState == 4) if (xmlHttp.status == 200) { //获得返回的数据 var data = xmlHttp.responseText; //json字符串转为json格局 data = eval(data); $.each(data, function(i, v) { alert(v); }); }}//后盾办法 public void GetAllComment(HttpContext context) { //Params能够获得get与post形式传递过去的值。 string methodName = context.Request.Params["methodName"]; //QueryString只能获得get形式传递过去的值。 string str1 = context.Request.Form["str1"]; //获得httpRequest传来的值,包含get与post形式 string str2 = context.Request["str2"]; List comments = new List(); comments.Add(methodName); comments.Add(str1); comments.Add(str2); //ajax承受的是json类型,须要把返回的数据转给json格局 string commentsJson = new JavaScriptSerializer().Serialize(comments); context.Response.Write(commentsJson); }建设xmlHttpRequest对象设置回调函数应用open办法与服务器建设链接向服务器发送数据在回调函数中针对不同的响应状态进行解决AJAX是有很多用途的,接下来给大家介绍AJAX须要把握的几个性能点:1、创立原生Ajax对象 ...

December 22, 2021 · 1 min · jiezi

关于ajax:记录Ajax请求报415与404问题

问题形容与剖析明天帮同学旁边共事解决了一个问题,问题是这样的:咱们有一个前后端未分离的我的项目agentBuy(Freemark+JQuery),共事想本地启动agentBuy服务(http:localhost:8001),联调后端共事的本地web-inquiry服务(http://127.168.24.68:9366),间接联调会有跨域问题,于是共事本地启动网关服务(spring cloud gateway)将agentBuy、web-inquiry服务代理到http:webagent.java.com:10000进行联调,然而发现接口报了415。 // agentBuy var params = { "storeId":"HL000001", "quoteType":"AUTO", "enable":"Y"};$.ajax({ url: WEB_ROOT + '/inquiryWeb/supply/quote/enable', // 在本地为http:webagent.java.com:10000/inquiryWeb/supply/quote/enable type: 'post', data : params, dataType: 'json', success: function (response) { // code... }})发现申请的入参会转化成键值对的模式,Request Payload: storeId=HL000001&quoteType=AUTO&enable=Y响应状态码为415(Unsupported Media Type),示意服务器无奈解决申请附带的媒体格式 (不反对的媒体类型) @Log4j2@RestController@RequiredArgsConstructor(onConstructor = @__(@Autowired))public class SupplyQuotationConfigController { private final SupplyQuotationConfigClient supplyQuotationConfigClient; private static final String REQUEST_NOT_VALIDATE = "申请参数校验不通过~"; private static final String INTERNAL_SERVER_ERROR = "网络异样,请稍后重试~"; @PostMapping("/supply/quote/enable") public ResponseEntity<Result<Boolean>> setSupplyQuoteEnable(@RequestBody SupplyQuoteEnableRequest request) { if (null == request || !request.validate()){ return new ResponseEntity<>(new Result<>(HttpStatus.BAD_REQUEST.value(), REQUEST_NOT_VALIDATE, Boolean.FALSE), HttpStatus.OK); } try { supplyQuotationConfigClient.setSupplyQuoteEnable(SupplyQuotationConfigFactory.toSupplyQuotationEnableRequest(request)); return new ResponseEntity<>(new Result<>(HttpStatus.OK.value(), null, Boolean.TRUE), HttpStatus.OK); }catch (HttpMessageException e){ return new ResponseEntity<>(new Result<>(e.getStatusCode(), e.getMessage(), Boolean.FALSE), HttpStatus.OK); }catch (Exception e){ return new ResponseEntity<>(new Result<>(HttpStatus.INTERNAL_SERVER_ERROR.value(), INTERNAL_SERVER_ERROR, Boolean.FALSE), HttpStatus.OK); } }}在排查后端接口发现,申请参数应用了@RequestBody注解,用来接管前端传递给后端的json字符串数据,而当初传的键值对的类型,因为如果没有自行指定request header Content-Type,默认为application/x-www-form-urlencoded,因而前后端定义的参数类型不统一,从而报了415谬误。 ...

October 22, 2021 · 1 min · jiezi

关于ajax:Ajax

Ajax的根本执行原理和执行过程通过xmlHttpRequest对象向服务器发送异步申请,获取服务器返回数据后,利用dom操作来更新页面。 外围局部是xmlHttpRequest对象,在生命周期的每个阶段xmlHttpRequest对象的不同函数,通过xmlHttpRequest来判断函数执行。 method参数示意申请形式,GET,POST,或者PUT。 URL参数示意门路,也能够绝对路径。 send函数,向服务器发送申请。 setRequestHeader('key','value')函数:设置申请头中属性为key的值为value,在设置申请头之前须要先调用open()函数,设header将随着send()函数一起发送。 创立XMLfunction createXMLHttp(){  //code for IE7 Firefox Chrome Opera Safari  if(window.XMLHttpRequest){    xmlhttp = new XMLHttpRequest(); }  //code for IE6 IE5  if(window.ActiveXObject){    try{      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");   }catch(e){      try{        xmlhttp = new ActiveXObject("msxm12.XMLHTTP");     }      catch(ex){}   } }}建设链接当XMLHttpRequest对象创立结束后,便能够通过open()函数建设链接,它指定了申请的url地址以及通过url传递的参数,默认值为true,示意采纳异步传输的形式。 发送申请并传递数据能够应用send()函数发送申请,并传递数据content 解决响应通过HTTP申请status状态码判断,当status值为200时代表申请胜利。 Ajax的长处无需刷新就更新数据 异步通信 前后端拆散。 毛病毁坏浏览器失常后退性能。 Nodejs服务器 应用ajax提交form表单form表单自定义的会刷新页面。form提交会传递发送信息。 form表单和Ajax几乎就是绝配。 能够间接封装Ajax. 和后面Ajax的提交传递办法一样。 步骤 创立XMlHttpRequest对象function createXMLHttp(){  //code for IE7 Firefox Chrome Opera Safari  var xmlhttp;  if(window.XMLHttpRequest){    xmlhttp = new XMLHttpRequest(); }  //code for IE6 IE5  if(window.ActiveXObject){    try{      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");   }catch(e){      try{        xmlhttp = new ActiveXObject("msxm12.XMLHTTP");     }      catch(ex){}   } }  return xmlhttp;}var xhr = createXMLHttp();建设连贯发送申请用POST办法,能够了解为用户注册办法 xhr.open('post','/saveUser',true);设置申请头发送的是POST申请,须要设置数据传输格局,即设置Content-type属性值,能够通过setRequestHeader()函数对其进行设置,将其值设置为比拟广泛的JSON数据格式。 xhr.setRequestHeader('Content-type','application/json;charset=UTF-8');获取数据通过dom操作获取数据 var username = document.getElementById('username').value;.........发送申请xhr.send(content);解决响应回调函数中判断 ...

September 23, 2021 · 1 min · jiezi

关于ajax:讲真的我在b站发布视频你们会看

做短视频的念头之前一段时间我也很想尝试,在抖音 快手 做短视频,做大做强。 前面想想 还是算了 ,七大姑八大姨都在抖音外面,一个算法推送,逢年过节 回家必定会问我,‘“为什么不找个班上上,要花工夫做视频”。 前面想想还是走b站吧,b站一是我本人一路走来也在下面学习了不少,当然不仅仅是编程方面,这也算是回馈吧 ,二是b站都受众也比拟能承受一些“新”的货色,也是个展示的平台。 会公布的题材像java还是c#也好的相干的编程语言的入门教学题材是十分多的,我再去发这些 意义并不是很多,另一个方面是我工夫无限外加能力无限(不肯定能讲的比现有的一些课程好)。所以我公布题材 视频全集应该不会连载太多 ,预计全集外面视频个数不会超过20个。次要是跟大家探讨学习办法(比方踩坑、如何记忆等等之类),针对编程的通用性 公布java相干视频(数据结构与算法、罕用的设计模式等等)、前端须要理解的一些小常识(这块次要是针对后端,前端工程化我也讲不了,毕竟不是业余的前端工程师)、而后就是针对一些话题发表本人的一些认识。 目前公布的视频全集这个月(2021-09),刚出差回来,录制了6段视频,原本认为2小时之内就能搞完了,没想到花了快5个小时,原本想给视频加上字幕(也是为了让大家更分明理解我讲了什么,次要是我地普通话和英文不是很规范,见笑了),而后发现生成后40M的视频 奇观的变成了1个G(我惊呆了) 前面果决发了没有字幕的(我真是机智的一比)。题外话说了一筐,差点收不住了。 本次发的视频是对于activi6.0的应用(与springboot的集成) 视频1:activiti6.0的应用以及与springboot的整合 前面发的是对于前端的视频(这块前面会连载): 视频2:一起来前端游玩(html+css+js) 其余的视频全集前面会陆续制作。 欢送关注我的公众号:程序员ken,程序之路,让咱们一起摸索,共同进步。

September 12, 2021 · 1 min · jiezi

关于ajax:fetch是怎么取代ajax的

fetch 简介Fetch API 提供了一个 JavaScript 接口,用于拜访和操纵 HTTP 管道的一些具体局部,例如申请和响应。它还提供了一个全局 fetch() 办法,该办法提供了一种简略,正当的形式来跨网络异步获取资源。这种性能以前是应用 XMLHttpRequest 实现的。Fetch 提供了一个更现实的代替计划,能够很容易地被其余技术应用,例如 Service Workers (en-US)。Fetch 还提供了专门的逻辑空间来定义其余与 HTTP 相干的概念,例如 CORS 和 HTTP 的扩大。fetch 标准与 jQuery.ajax() 次要有三种形式的不同当接管到一个代表谬误的 HTTP 状态码时,从 fetch() 返回的 Promise 不会被标记为 reject, 即便响应的 HTTP 状态码是 404 或 500。相同,它会将 Promise 状态标记为 resolve (然而会将 resolve 的返回值的 ok 属性设置为 false ),仅当网络故障时或申请被阻止时,才会标记为 reject。fetch() 能够不会承受跨域 cookies;你也能够不能应用 fetch() 建设起跨域会话。其余网站的 Set-Cookie 头部字段将会被忽视。fetch 不会发送 cookies。除非你应用了credentials 的初始化选项。(自 2017 年 8 月 25 日当前,默认的 credentials 政策变更为 same-origin。Firefox 也在 61.0b13 版本中进行了批改)------------以上不同来自官网 ...

August 28, 2021 · 3 min · jiezi

关于ajax:ajax是什么

1、什么是AjaxAjax:即异步 JavaScript 和XML。Ajax是一种用于创立疾速动静网页的技术。通过在后盾与服务器进行大量数据交换,Ajax能够使网页实现异步更新。这意味着能够在不从新加载整个网页的状况下,对网页的某局部进行更新。而传统的网页(不应用 Ajax)如果须要更新内容,必须重载整个网页面。 2、同步与异步的区别同步提交:当用户发送申请时,以后页面不能够应用,服务器响应页面到客户端,响应实现,用户才能够应用页面。网页游戏异步提交:当用户发送申请时,以后页面还能够持续应用,当异步申请的数据响应给页面,页面把数据显示进去 。 3、ajax的工作原理客户端发送申请,申请交给xhr,xhr把申请提交给服务,服务器进行业务解决,服务器响应数据交给xhr对象,xhr对象接收数据,由javascript把数据写到页面上

July 28, 2021 · 1 min · jiezi

关于ajax:最严谨的ajax请求封装

一、封装ajax封装最谨严的ajax,可间接复制援用ajax.js function sendAjax(obj){ / 先判断url是否传入if(!obj.url){ / 没有传 throw new Error('地址必填') / 抛出自定义谬误}/ 传入了之后须要验证url是否是字符串if(Object.prototype.toString.call(obj.url) !== '[object String]'){ throw new Error('地址必须是字符串')}/ 判断申请形式是否传入if(!obj.method){ obj.method = 'get'}/ 传入了 - 验证是否是get或postif(obj.method.toLowerCase()!=='get' && obj.method.toLowerCase()!=='post'){ throw new Error('申请形式必须是get或post')}/ 判断async是否传入if(obj.async === undefined){ obj.async = true}/ 判断类型if(Object.prototype.toString.call(obj.async) !== '[object Boolean]'){ throw new Error('async必须是布尔值')}/ 判断是否传入successif(!obj.success){ obj.success = function(){}}/ 判断是否是函数if(Object.prototype.toString.call(obj.success) !== '[object Function]'){ throw new Error('success必须是函数')} if(!obj.error){ obj.error = function(){}}if(Object.prototype.toString.call(obj.error) !== '[object Function]'){ throw new Error('error必须是函数')}/ 判断数据是否传入var str = '';if(obj.data){ / 判断类型 if(Object.prototype.toString.call(obj.data) === '[object String]'){ str = obj.data }else if(Object.prototype.toString.call(obj.data) === '[object Object]'){ / 对象要解决成字符串 var f = ''; for(var attr in obj.data){ str += f + attr + '=' + obj.data[attr] f = '&' } }else{ throw new Error('非法数据') } / 如果是get申请,须要将数据拼接在地址后 if(obj.method.toLowerCase() === 'get'){ obj.url += '?' + str }}/ 判断心愿申请回来的数据格式if(!obj.dataType){ obj.dataType = 'json'}/ 如果传了if(obj.dataType.toLowerCase()!=='json' && obj.dataType.toLowerCase()!=='text' && obj.dataType.toLowerCase()!=='xml'){ throw new Error('dataType非法')}/*{ url:'', method:'', data:'', async:'', success:function(){}, error:'', dataType:'text/json/xml'}*/var xhr = new XMLHttpRequest;xhr.onreadystatechange = function(){ if(xhr.readyState === 4){ if(parseInt(xhr.status/100) === 2){ / 确定要不要转对象 switch(obj.dataType.toLowerCase()){ case 'json': var res = xhr.responseText; res = JSON.parse(res) break; case 'xml': var res = xhr.responseXML; break; case 'text': var res = xhr.responseText; break; } obj.success(res) }else{ obj.error() } }}xhr.open(obj.method,obj.url,obj.async)if(obj.method.toLowerCase() === 'post' && obj.data){ / 设置申请头 xhr.setRequestHeader('content-type','application/x-www-form-urlencoded') xhr.send(str) return}xhr.send()} ...

May 25, 2021 · 2 min · jiezi

关于ajax:AJAX学习笔记

Ajax概念Ajax是 Asynchronous JavaScript And XML 异步的JavaScript 和 XML。 异步和同步:客户端和服务器端互相通信的根底上。 客户端必须期待服务器端的响应。在期待的期间客户端不能做其余操作。 客户端不须要期待服务器端的响应。在服务器解决申请的过程中,客户端能够进行其余的操作。 Ajax 是一种在无需从新加载整个网页的状况下,可能更新局部网页的技术。通过在后盾与服务器进行大量数据交换,Ajax 能够使网页实现异步更新。这意味着能够在不从新加载整个网页的状况下,对网页的某局部进行更新。传统的网页(不应用 Ajax)如果须要更新内容,必须重载整个网页页面。晋升用户的体验。 原生Ajax //1.创立外围对象var xmlhttp;if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest();} else {// code for IE6, IE5 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");} //2. 建设连贯/* 参数: 1. 申请形式:GET、POST * get形式,申请参数在URL后边拼接。send办法为空参 * post形式,申请参数在send办法中定义 2. 申请的URL: 3. 同步或异步申请:true(异步)或 false(同步) */xmlhttp.open("GET", "ajaxServlet?username=tom", true); //3.发送申请xmlhttp.send(); //4.承受并解决来自服务器的响应后果//获取形式 :xmlhttp.responseText//什么时候获取?当服务器响应胜利后再获取 //当xmlhttp对象的就绪状态扭转时,触发事件onreadystatechange。xmlhttp.onreadystatechange = function () { //判断readyState就绪状态是否为4,判断status响应状态码是否为200 if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { //获取服务器的响应后果 var responseText = xmlhttp.responseText; alert(responseText); }}jQuery实现根本语法如下,有三种形式: ...

May 18, 2021 · 2 min · jiezi

关于ajax:Ajax基础-学习记录三

jQuery 中的 Ajax$.ajax()$.ajax()办法概述作用:发送Ajax申请。 $.ajax({ type: 'get', url: 'http://www.example.com', data: { name: 'zhangsan', age: '20' }, //data: 'name=zhangsan&age=20' contentType: 'application/x-www-form-urlencoded', //contentType: 'application/json' beforeSend: function () { return false }, success: function (response) {}, error: function (xhr) {}});beforeSend办法阐明 $.ajax({ // 申请形式 type: 'post', // 申请地址 url: '/user', // 在申请发送之前调用 beforeSend: function () { alert('申请不会被发送') // 申请不会被发送 return false; }, // 申请胜利当前函数被调用 success: function (response) { // response为服务器端返回的数据 // 办法外部会主动将json字符串转换为json对象 console.log(response); }})作用:发送jsonp申请。 ...

April 10, 2021 · 2 min · jiezi

关于ajax:Ajax基础-学习记录二

模板引擎模板引擎概述作用:应用模板引擎提供的模板语法,能够将数据和 HTML 拼接起来。官网地址: https://aui.github.io/art-tem... 应用步骤下载 art-template 模板引擎库文件并在 HTML 页面中引入库文件 <script src="./js/template-web.js"></script>筹备 art-template 模板 <script id="tpl" type="text/html"> <div class="box"></div> </script>通知模板引擎将哪一个模板和哪个数据进行拼接 var html = template('tpl', {username: 'zhangsan', age: '20'});将拼接好的html字符串增加到页面中 document.getElementById('container').innerHTML = html;通过模板语法通知模板引擎,数据和html字符串要如何拼接 <script id="tpl" type="text/html"> <div class="box"> {{ username }} </div> </script>FormData模仿HTML表单,相当于将HTML表单映射成表单对象,主动将表单对象中的数据拼接成申请参数的格局。异步上传二进制文件FormData 对象的应用筹备 HTML 表单 <form id="form"> <input type="text" name="username" /> <input type="password" name="password" /> <input type="button"/></form>将 HTML 表单转化为 formData 对象var form = document.getElementById('form'); var formData = new FormData(form);提交表单对象 xhr.send(formData);留神:Formdata 对象不能用于 get 申请,因为对象须要被传递到 send 办法中,而 get 申请形式的申请参数只能放在申请地址的前面。服务器端 bodyParser 模块不能解析 formData 对象表单数据,咱们须要应用 formidable 模块进行解析。 FormData 对象的实例办法获取表单对象中属性的值 formData.get('key');设置表单对象中属性的值 formData.set('key', 'value');删除表单对象中属性的值 formData.delete('key');向表单对象中追加属性值 formData.append('key', 'value');留神:set 办法与 append 办法的区别是,在属性名已存在的状况下,set 会笼罩已有键名的值,append会保留两个值。 ...

April 10, 2021 · 3 min · jiezi

关于ajax:Ajax基础-学习记录一

Ajax 根底传统网站中存在的问题 网速慢的状况下,页面加载工夫长,用户只能期待表单提交后,如果一项内容不合格,须要从新填写所有表单内容页面跳转,从新加载页面,造成资源节约,减少用户等待时间Ajax 概述Ajax:规范读音 [edæks] ,中文音译:阿贾克斯它是浏览器提供的一套办法,能够实现页面无刷新更新数据,进步用户浏览网站利用的体验。 Ajax 的利用场景页面上拉加载更多数据列表数据无刷新分页表单项来到焦点数据验证搜寻框提醒文字下拉列表Ajax 的运行环境Ajax 技术须要运行在网站环境中能力失效,这里应用Node创立的服务器作为网站服务器。 Ajax 运行原理及实现Ajax 运行原理Ajax 相当于浏览器发送申请与接管响应的代理人,以实现在不影响用户浏览页面的状况下,部分更新页面数据,从而进步用户体验。 Ajax 的实现步骤创立 Ajax 对象 var xhr = new XMLHttpRequest();通知 Ajax 申请地址以及申请形式 xhr.open('get', 'http://www.example.com');发送申请 xhr.send();获取服务器端给与客户端的响应数据 xhr.onload = function () { console.log(xhr.responseText); }服务器端响应的数据格式在实在的我的项目中,服务器端大多数状况下会以 JSON 对象作为响应数据的格局。当客户端拿到响应数据时,要将 JSON 数据和 HTML 字符串进行拼接,而后将拼接的后果展现在页面中。 在 http 申请与响应的过程中,无论是申请参数还是响应内容,如果是对象类型,最终都会被转换为对象字符串进行传输。 JSON.parse() // 将 json 字符串转换为json对象申请参数传递传统网站表单提交 <form method="get" action="http://www.example.com"> <input type="text" name="username"/> <input type="password" name="password"> </form> <!– http://www.example.com?username=zhangsan&password=123456 -->Ajax提交GET 申请形式 xhr.open('get', 'http://www.example.com?name=zhangsan&age=20');POST 申请形式 xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') xhr.send('name=zhangsan&age=20');申请参数的格局1.application/x-www-form-urlencoded name=zhangsan&age=20&sex=男2.application/json {name: 'zhangsan', age: '20', sex: '男'}在申请头中指定 Content-Type 属性的值是 application/json,通知服务器端以后申请参数的格局是 json。 ...

April 10, 2021 · 3 min · jiezi

关于ajax:SpringBootAjax的使用

Ajax概述Ajax 是什么?Ajax (Asynchronous JavaScript and XML) 是一种Web利用客户端技术,能够借助客户端脚本(javascript)与服务端利用进行异步通信(能够有多个线程同时与服务器交互),并且按需获取服务端数据当前,能够进行部分刷新,进而进步数据的响应和渲染速度。 Ajax 利用场景?Ajax技术最大的劣势就是底层异步,而后部分刷新,进而进步用户体验,这种技术当初在很多我的项目中都有很好的利用,例如: 商品零碎。评估零碎。地图零碎。…..AJAX能够仅向服务器发送并取回必要的数据,并在客户端采纳JavaScript解决来自服务器的响应。这样在服务器和浏览器之间替换的数据大量缩小,服务器响应的速度就更快了。但Ajax技术也有劣势,最大劣势是不能间接进行跨域拜访。 Ajax 申请响应过程剖析传统形式是web申请与响应(客户端要期待响应后果),如图所示: Ajax形式的申请与响应(要害是客户端不阻塞),如图所示: Ajax 编程步骤及模板代码剖析Ajax 编码的根本步骤?(重点是ajax技术的入口-XMLHttpRequest-XHR对象) 第一步:基于dom事件创立XHR对象第二步:在XHR对象上注册状态监听(监听客户端与服务端的通信过程)第三步:与服务端建设连贯(指定申请形式,申请url,同步还是异步)第四步:发送申请(将申请数据传递服务端) Ajax 编码过程的模板代码如下: var xhr=new XMLHttpRequest();xhr.onreadystatechange=function(){ if(xhr.readyState==4&&xhr.status==200){ console.log(xhr.responseText) }}xhr.open("GET",url,true);xhr.send(null);SpringBoot我的项目Ajax的利用第一步:创立我的项目13-springbooit-ajax 第二步:增加Spring web依赖,代码如下: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>第三步:创立AjaxController解决客户端申请,代码如下: package com.cy.pj.ajax.controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class AjaxController { @RequestMapping("/doAjaxStart") public String doAjaxStart(){ return "Response Result Of Ajax Get Request 01 "; }}第四步:在我的项目中static目录下,创立一个页面ajax-01.html,代码如下: html元素代码如下: <h1>The Ajax 01 Page</h1><fieldset> <legend>Ajax 异步Get申请</legend> <button onclick="doAjaxStart()">Ajax Get Request</button> <span id="result">Data is Loading ...</span></fieldset>javascript 脚本代码如下: ...

December 6, 2020 · 3 min · jiezi

关于ajax:Ajax技术应用

Ajax是什么Ajax是一种web利用技术,能够借助就客户端脚本与服务端利用进行异步通信,,获取服务端数据当前,能够进行部分刷新。进而进步数据的响应和渲染速度。 Ajax入门代码剖析及实现Ajax编码的步骤?重点是Ajax技术的入口-XMLHttpRequest-XHR对象第一步:基于dom事件创立XHR对象第二步:在XHR对象上注册状态监听(监听客户端与服务端的通信过程)第三步:与服务端建设连贯(指定申请形式,申请url,同步还是异步)第四步:发送申请(将申请数据传递服务端)Ajax编码过程疾速入门,代码如下: springboot中的Ajax技术利用及代码实现业务形容在我的项目中static目录下,创立一个页面ajax-01待补充...

November 10, 2020 · 1 min · jiezi

关于ajax:WEB前端四Ajax

AjaxAjax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创立交互式、疾速动静网页利用的技术。晚期只有同步的形式,多个申请,只能程序执行,只能期待执行。有了ajax异步技术,能够无需期待上一个申请执行实现,就能够间接发动申请。服务端返回后,ajax通过回调技术告诉客户端程序,把响应的后果传递给用户当时写好的回调函数。通过在后盾与服务器进行大量数据交换,Ajax 能够使网页实现异步更新。这意味着能够在不从新加载整个网页的状况下,对网页进行部分更新,晋升网页的效率,用户无需期待页面的刷新,嗖的一下内容就变动了。扭转原有整个页面刷新,造成页面晃眼的景象。所以这项技术一呈现,就失去业界的推崇。关键字:异步、回调、部分刷新。 XHR对象: XMLHttpRequest对象办法如下: about()   进行以后的申请。 getAllResponseHeaders()   把HTTP申请的所有响应首部作为键/值对返回 getResponseHeader("header")  返回指定首部的串值 open("method","URL",[asyncFlag]) :建设对服务器的调用。method参数能够是GET、POST。url参数能够是绝对URL或相对URL。这个办法还包含可选的参数,是否异步(true或者false)。 send(content) 向服务器发送申请。send接管一个参数,即作为申请主体发送的数据。如果不须要通过申请主体发送数据,则必须传入null,因为这个参数对有些浏览器来说是必须的。调用send()之后,申请就会分派到服务器。setRequestHeader("header", "value"): 把指定首部设置为所提供的值。在设置任何首部之前必须先调用open()。设置header并和申请一起发送 ('post'办法肯定要 ) XMLHttpRequest 对象属性形容: onreadystatechange:状态扭转的事件触发器,每个状态扭转时都会触发这个事件处理器. readyState:  申请的状态。有5个可取值: 0: 未初始化。尚未调用open()办法。1:启动。曾经调用open()办法,但尚未调用send()办法。2:发送。曾经调用send()办法,readyState下面的值就是HEADERS_RECEIVED,曾经发送并且曾经接管到响应头和响应状态了。3:接管。曾经接管到局部相应数据。4:实现。曾经接管到全副相应数据,而且曾经能够在客户端应用了。 responseText: 服务器的响应,返回数据的文本。 responseXML:服务器的响应,返回数据的兼容DOM的XML文档对象 ,这个对象能够解析为一个DOM对象。 status:服务器的HTTP状态码(如:404 = "文件末找到" 、200 ="胜利" ,等等) statusText: 服务器返回的状态文本信息 ,HTTP状态码的相应文本(OK或Not Found(未找到)等等。 JsonJSON(JavaScript Object Notation, JS 对象简谱) 起名不咋地,十分拗口,咱们就记住它是一种轻量级的数据交换格局即可。它基于 ECMAScript (js标准)的一个子集,采纳齐全独立于编程语言的文本格式来存储和示意数据。简洁和清晰的层次结构使得 JSON 成为现实的数据交换语言。是xml的终结者,成为支流开发方式(ajax异步申请,json返回)。关键字:ES规范、JSON、XML例京东网页获取一个商品信息: [{"cbf":"0","id":"J_100003717483","m":"10000.00","op":"2499.00","p":"2099.00"}]构造特点: 数组[]一条记录{},多条记录用逗号隔开 {},{},最初一条没有逗号键值对 "p":"2099.00",kv用双引号括,多个用逗号隔开,最初一个没有逗号网页实现部分刷新技术栈:javascript、jQuery、http协定(申请request、响应response)、Web中间件(tomcat)、mysql数据库,json传输。 实现Ajax原生js实现Ajax创立XHR对象设置状态监听建设与服务端的连贯发送申请GET申请: <script> //js当中排错的形式:断点(debugger),console.log,排除法 function doAjaxGet(){//这个办法运行与浏览器过程外部的主线程(main)中 debugger; //1.创立XHR对象(此对象时ajax技术利用的入口对象,发送异步申请,解决响应后果都是通过此对象实现) var xhr=new XMLHttpRequest(); //2.设置状态监听 xhr.onreadystatechange=function (){//事件监听函数(解决客户端与服务端通过过程产生的数据) if(xhr.readyState==4&&xhr.status==200){ //readyState的值0,1,2,3,4 //0,示意还未执行open办法 //1,示意已执行open办法但还未执行send办法 //2,示意已执行send办法 //3,示意客户端正在接管服务端响应的数据 //4,示意客户端曾经实现响应数据的接管 //xhr.status==200示意服务端处理过程时OK的 var result=xhr.responseText;//获取服务端响应的文本数据 document.getElementById("resultId").innerHTML=result; } }; //3.建设与服务端的连贯 xhr.open("GET","http://127.0.0.1/doAjaxGet",true);//true代表异步申请;false代表同步申请 //127.0.0.1 可能存在跨域问题 须要在管制层加注解@CrossOrigin //4.发送申请 xhr.send(null);//将申请交给ajax引擎 console.log("do other ....");//run main thread }</script>POST申请: ...

October 25, 2020 · 2 min · jiezi

关于ajax:第三阶段-Day05-完成商品后台管理

1. 实现商品后盾治理1.1 表格数据的展示形式1.1.1 编辑页面`</script>--> <table class="easyui-datagrid" style="width:500px;height:300px" data-options="url:'datagrid_data.json',method:'get',fitColumns:true,singleSelect:true,pagination:true"> <thead> <tr> <th data-options="field:'code',width:100">Code</th> <th data-options="field:'name',width:100">Name</th> <th data-options="field:'price',width:100,align:'right'">Price</th> </tr> </thead> </table>` 1.1.2 返回值类型的阐明属性信息: total/rows/属性元素 `{ "total":2000, "rows":[ {"code":"A","name":"果汁","price":"20"}, {"code":"B","name":"汉堡","price":"30"}, {"code":"C","name":"鸡柳","price":"40"}, {"code":"D","name":"可乐","price":"50"}, {"code":"E","name":"薯条","price":"10"}, {"code":"F","name":"麦旋风","price":"20"}, {"code":"G","name":"套餐","price":"100"} ]}` 1.2 JSON常识回顾1.2.1 JSON介绍JSON(JavaScript Object Notation) 是一种轻量级的数据交换格局。它使得人们很容易的进行浏览和编写。 1.2.2 Object对象类型 1.2.3 Array格局 1.2.4 嵌套格局例子: `{"id":"100","hobbys":["玩游戏","敲代码","看动漫"],"person":{"age":"19","sex":["男","女","其余"]}}` 1.3 编辑EasyUITablle的VO对象`package com.jt.vo;import com.jt.pojo.Item;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import lombok.experimental.Accessors;import java.util.List;@Data@Accessors(chain = true)@NoArgsConstructor@AllArgsConstructorpublic class EasyUITable { private Long total; private List<Item> rows;}` 1.4 商品列表展示1.4.1 页面剖析业务阐明: 当用户点击列表按钮时.以跳转到item-list.jsp页面中.会解析其中的EasyUI表格数据.发动申请url:’/item/query’要求返回值必须满足特定的JSON构造,所以采纳EasyUITable办法进行数据返回. ...

October 22, 2020 · 4 min · jiezi

关于ajax:第三阶段-Day04-创建父级子级项目

1.Ajax增强1.1 Ajax特点应用ajax特点为: 部分刷新,异步响应.同步毛病: 如果进行了同步的申请,那么用户不能够做任何的操作,只能期待工作的实现. 用户的敌对性差. 1.2 对于Ajax调用阐明`<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><title>您好Springboot</title><script type="text/javascript" src="/js/jquery-3.4.1.min.js"></script><script type="text/javascript"> /** for语法1: for(let i=0;i<xxx.length;i++){ ..... } for语法2: index 代表下标 for(let index in data){ console.log("测试for循环") let user = data[index]; alert(user.name); } for语法3: user以后循环遍历的对象 for(let user of data){ console.log("for循环测试:"+user.name); } **/ $(function(){ $.ajax({ type : "get", url : "/findAjax", //dataType : "text/json/html/xml", //返回值类型 async : false, //敞开异步操作,改为同步的申请 success : function(data){ let trs = ""; for(let user of data){ let id = user.id; let name = user.name; let age = user.age; let sex = user.sex; trs += "<tr align='center'><td>"+id+"</td><td>"+name+"</td><td>"+age+"</td><td>"+sex+"</td></tr>" } $("#tab1").append(trs); }, error : function(){ alert("申请异样!!!!"); } }) //1. $.get(url,data,回调函数) //findAjax查问后端userList汇合信息. /* $.get("/findAjax",function(data){ $(data).foreach(function(index,user){ console.log(user); }) let trs = ""; for(let user of data){ let id = user.id; let name = user.name; let age = user.age; let sex = user.sex; trs += "<tr align='center'><td>"+id+"</td><td>"+name+"</td><td>"+age+"</td><td>"+sex+"</td></tr>" } $("#tab1").append(trs); }); */ });</script></head><body> <table id="tab1" border="1px" width="65%" align="center"> <tr> <td colspan="6" align="center"><h3>学生信息</h3></td> </tr> <tr> <th>编号</th> <th>姓名</th> <th>年龄</th> <th>性别</th> </tr> </table></body></html>` 京淘我的项目架构设计============ ...

October 22, 2020 · 4 min · jiezi

关于ajax:Ajax个人理解

Ajax概述: Ajax (Asynchronous JavaScript and XML) 是一种Web利用技术,能够借助客户端脚本(javascript)与服务端利用进行异步通信,获取服务端数据当前,能够进行部分刷新。进而进步数据的响应和渲染速度.为什么会有Ajax呢?强化了服务器的响应速度,留神:AJax不能进行跨域拜访实现AJax的固定步骤:1.创立XHR(XMLHttpReques)对象var xhr= new XMLHttpRequest();2.创立状态监听呈现谬误时有三种查看办法(consloe日志法,debbger断点调试,排除法)xhr.onreadystatechange=function(){ if(xhr.readState==4){//服务端响应完结,客户端接管实现 if(xhr.status==200){//200示意失常响应完结 console.log(xhr.responseText); } }}3.建设连贯xhr.open("提交形式","(GET提交)提交的门路?提交的参数/(Post)提交的门路",boolean(true示意异步提交,false示意同步提交));4.提交xhr.send("(Post提交)提交的参数/(GET提交)null或者什么也不写")注意事项: 构建参数对象 形式一 var params="name"+name;//淘汰 形式二 只有用到字符串拼接就用这种写法 const只有当前不想他人用就用const来润饰 const params = `name=${an}`;//一种新的写法。这种写法称之为模板字符串,所有字符串 形式三 const params= {"name":name};//JavaScript中的对象var let const的区别:var :js中全局变量,被润饰后没有被初始化的化输入的时undefinder let :js中局部变量部分中尽量应用let函数函数外部应用let定义后,对函数内部无影响块级作用域 const: js中常量修饰符必须初始化赋值

October 21, 2020 · 1 min · jiezi

关于ajax:什么是ajax

才开始接触Ajax的时候,只是晓得它的作用是客户端与服务端之间在不刷新网页的状况下进行数据交换,但对于他具体是什么,在客户端与服务端怎么进行数据交换的原理是不分明的,当初咱们来理解一下. 一.Ajax是什么 Ajax,全称Asynchronous JavaScript and XML ,也就是异步加载的javascript 和 XML2.Ajax是一种用于创立疾速动静网页的技术。 3.通过在后盾与服务器进行大量数据交换,Ajax能够使网页实现异步更新。这意味着能够在不从新加载整个网页的状况下,对网页的某局部进行更新。 二.Ajax的长处 ajax能在页面上宽泛的应用,当然是尤其的益处长处的中央。 (1)、不须要刷新失去动态数据(地图,投票网站等) (2)、界面好看,给用户的体验好 (3)、对数据库的操作 (4)、局部刷新页面 (5)、返回类型多:字符串、json、xml、html 三.工作流程 1.发送接口申请 2.解析内容 3.渲染网页失去的后果 当初软件开发实现前后端拆散开发,前端写好页面之后,通过Ajax调用后端提供的接口实现前后端的数据交互,个别是通过接口文档或者工具进行接口查看的,我个别应用的是国产的apipost的接口测试工具. 这是测试接口是否失常和查看后端给的响应值 通过须要传递的url,参数和申请办法,来获取接口返回的响应值 而后咱们在Ajax中依据这些货色来写,就能够实现前后端数据交互了. ApiPost - 可间接生成文档的API调试、管理工具www.apipost.cn

October 15, 2020 · 1 min · jiezi

关于ajax:ajax是什么

才开始接触Ajax的时候,只是晓得它的作用是客户端与服务端之间在不刷新网页的状况下进行数据交换,但对于他具体是什么,在客户端与服务端怎么进行数据交换的原理是不分明的,当初咱们来理解一下. 一.Ajax是什么 Ajax,全称Asynchronous JavaScript and XML ,也就是异步加载的javascript 和 XML2.Ajax是一种用于创立疾速动静网页的技术。 3.通过在后盾与服务器进行大量数据交换,Ajax能够使网页实现异步更新。这意味着能够在不从新加载整个网页的状况下,对网页的某局部进行更新。 二.Ajax的长处 ajax能在页面上宽泛的应用,当然是尤其的益处长处的中央。 (1)、不须要刷新失去动态数据(地图,投票网站等) (2)、界面好看,给用户的体验好 (3)、对数据库的操作 (4)、局部刷新页面 (5)、返回类型多:字符串、json、xml、html 三.工作流程 1.发送接口申请 2.解析内容 3.渲染网页失去的后果 当初软件开发实现前后端拆散开发,前端写好页面之后,通过Ajax调用后端提供的接口实现前后端的数据交互,个别是通过接口文档或者工具进行接口查看的,我个别应用的是国产的apipost的接口测试工具.(这个工具官网下载和更新保护都很及时http://www.apipost.cn) 这是测试接口是否失常和查看后端给的响应值 通过须要传递的url,参数和申请办法,来获取接口返回的响应值 而后咱们在Ajax中依据这些货色来写,就能够实现前后端数据交互了.

October 15, 2020 · 1 min · jiezi

关于ajax:Ajax在实战中的应用

1.什么是Ajax?Ajax是一种Web技术,利用客户端脚本(javascript)与服务器端进行的异步交互,实现页面的部分刷新。 同步交互:客户端与服务端通过HTTP协定,实现Request(申请)与Response(响应)的成对呈现。 异步交互:在客户端与服务端两头存在一个ajax引擎,客户端在向服务端发送申请的同时,客户端委托给ajax,能够有多个Ajax申请发向服务端发送申请。 2.Ajax的劣势通过异步交互,实现页面的部分刷新。 一面墙上有一个污点,咱们是刷新整面墙效率高还是针对某个地位部分粉刷效率高。可想而知,ajax极大的进步了数据的效应数据。 视图页面加载是很快的,然而数据的加载是比较慢的。通过ajax技术,减少ajax申请的个数,这样在服务器和浏览器之间替换的数据大量缩小,服务器响应的速度就更快了。 3.Ajax的用法3.1 原生用法所有的Ajax 申请都会基于DOM(HTML元素)事件,通过XHR(XMLHttpRequest)对象实现与服务端异步通信部分更新 第一步:基于dom事件创立XHR对象(XMLHttpRequest对象) 第二步:注册XHR对象状态监听,通过回调函数(callback)解决状态信息。 第三步:创立与服务端的连贯 第四步:发送异步申请实现与服务端的通信 //Ajax形式的申请 function doAjaxGet(){ //1.创立XHR对象 var xhr=new XMLHttpRequest(); //2.设置状态监听(将服务端响应的后果更新到ajaxResultId地位) xhr.onreadystatechange=function(){ if(xhr.readyState==4&&xhr.status==200){ console.log(xhr.responseText); document.getElementById("ajaxResultId").innerHTML=xhr.responseText; } }; //3.建设连贯 xhr.open("GET","http://localhost/doGet",**true**); //true示意异步(底层会启动线程与服务端通信) //4.发送申请 xhr.send();} 这种原始形式,反复代码过多,极大的升高了咱们的开发效率。接下来咱们应用框架,框架会提取共性而后进行封装,留出个性接口不便咱们应用。 3.2通过jQuery框架应用AjaxjQuery设计的主旨是“write Less,Do More”,即提倡写更少的代码,做更多的事件 get函数利用,代码如下 //向服务端发送Ajax Get 申请 function **doGet**(){ //1.定义申请的url var url="doAjaxGet"; //2.定义申请的参数 var params="msg=hello jquery ajax get"; //3.发送异步Get申请 $.get(url,params,function(result){ //document.getElementById("result").innerHTML=result; $("#result").html(result); },"text");//在这个函数中你看到ajax的代码了吗? }post函数利用,代码如下 //向服务端发送Ajax Post 申请 function doPost(){ //1.定义申请的url var url="doAjaxPost"; //2.定义申请的参数 var params="msg=hello jquery ajax Post"; //3.发送异步POST申请 //这里的$符号为jQuery中的一个对象 //post(url[,params][,callback][,dataType])为jquery中的一个ajax函数 $.post(url,params,function(result){ //post申请个别用于向服务端提交数据 $("#result").html(result); });//在这个函数中你看到ajax的代码了吗? }ajax函数利用 ...

September 26, 2020 · 1 min · jiezi

关于ajax:Ajax

1.ajax增强 同步申请:分身无术,用户操作某一工作的同时,不能够做任何的操作,只能期待工作实现,用户的敌对性差异步申请:用户把申请交由ajax引擎再交由服务器,必须得有回调函数的反对$.get("/findAjax",function (result) {})遍历后果集: 办法2办法3ajax

September 25, 2020 · 1 min · jiezi

关于ajax:Ajax-技术应用

1 Ajax 简介1.1 Ajax是什么Ajax (Asynchronous JavaScript and XML) 是一种Web利用技术,能够借助客户端脚本(javascript)与服务端利用进行异步通信,获取服务端数据当前,能够进行部分刷新。进而进步数据的响应和渲染速度。 1.2Ajax技术利用场景1)Ajax技术最大的劣势就是底层异步,而后进行部分刷新,进而进步用户体验,这种技术当初在很多我的项目中都有很好的利用。2)Ajax能够仅向服务器发送并取回必要的数据,并在客户端采纳JavaScript解决来自服务器的响应。这样在服务器和浏览器之间替换的数据大量缩小,服务器响应的速度就能够放慢。劣势是:不能之间进行跨域拜访 2 Ajax 疾速入门2.1申请响应过程剖析所有的Ajax申请都会基于DOM(HTML元素)事件,,通过XHR(XMLHttpRequest)对象实现与服务端异步通信部分刷新。 2.2Ajax利用的编程步骤如下1)基于dom事件创立XHR对象(XMLHttpRequest对象)2)注册XHR对象监听状态,通过回调函数(callback)解决状态信息3)创立于服务端的连贯4)发送异步申请实现与服务端的通信 2.3Ajax入门代码繁难实现业务形容,设计如下页面,在页面上点击Get Request按钮时,向服务端发送异步申请获取服务端数据,而后将响应后果更新到页面上. 2.3.1第一步服务端代码设计**package com.cy.ajax.controller;@Controller@RequestMapping("/")public class AjaxController { @RequestMapping("doAjax01UI") public String doAjax01UI() { return "ajax-01"; } //解决ajax申请的服务端设计 @RequestMapping("doAjaxGet") @ResponseBody //将办法返回值以字符串模式进行输入 public String doAjaxGet() throws Exception{System.out.println("==doGet()=="); //Thread.sleep(3000);//模仿耗时操作 return "Ajax Get request result"; }}2.3.2客户端代码设计客户端页面要害dom元素设计 <!-- Ajax形式的异步申请测试 --> <fieldset> <!-- 分组设置 --> <legend>异步申请</legend> <button onclick="doAjaxGet()">Get Request</button> <span id="ajaxResultId">loading data ....</span> </fieldset>客户端页面中要害Ajax代码设计与实现 //Ajax形式的申请 function doAjaxGet(){//谬误调试:debugger,console.log(),排除法 //1.创立XHR对象 var xhr=new XMLHttpRequest(); //2.设置状态监听(将服务端响应的后果更新到ajaxResultId地位)xhr.onreadystatechange=function(){ //console.log(xhr.readState); if(xhr.readyState==4&&xhr.status==200){ console.log(xhr.responseText);document.getElementById("ajaxResultId").innerHTML=xhr.responseText; } }; //3.建设连贯xhr.open("GET","http://localhost/doGet",true);//true示意异步(底层会启动线程与服务端通信) //4.发送申请 xhr.send();}3 Ajax技术进阶实现3.1Ajax要害代码的封装在理论编程过程中咱们通常会封装代码共性。提取代码个性,而后来进步代码的可重用性。例如:第一步:封装Ajax Get申请,要害代码剖析如下: ...

September 23, 2020 · 1 min · jiezi

关于ajax:1活动html

html页面~~~~ <!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><!-- 加这两个标签是为了让挪动端的设施优先 --><!-- css元素要在head表中增加元素 这个标签是引入bootstrap--><link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet"><link href="/datepicker/css/bootstrap-datetimepicker.min.css" rel="stylesheet"></head><body> <!-- 主元素 --> <div class="container"> <h1>The hello</h1> <!-- Button trigger modal --> <!-- class=bth bth-danger管制按钮的款式(色彩) --> <button type="button" class="btn btn-danger" data-toggle="modal" data-target="#myModal">点击增加</button> <!-- Modal --> <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">&times;</span> </button> <h4 class="modal-title" id="myModalLabel">都是中国人玩什么洋文</h4> </div> <!--表单元素 --> <div class="modal-body"> <!--如果须要增加多个form表单就要增加单个id的值 --> <form action="doinsertObject" method="post"> <div class="form-group"> <label for="1exampleInputEmail1">滚滚滚</label> <input type="text" class="form-control" name="title" id="1exampleInputEmail1" placeholder="Email"> </div> <div class="form-group"> <label for="exampleInputEmail1">滚滚驴</label> <select class="form-control" name="category" id="categoryId"> <option value="training">教育机构</option> <option value="Playing">轻易</option> </select> </div> <div class="form-group"> <label for="2exampleInputEmail1">滚滚狗</label> <input type="text" autocomplete="off" class="form-control form_datetime" name="startTime" id="2exampleInputEmail1" placeholder="Email"> </div> <!-- autocomplete="off" 分明缓存数据让日期表单间接显示进去--> <div class="form-group"> <label for="3exampleInputEmail1">滚滚熊</label> <input type="text" autocomplete="off" class="form-control form_datetime" name="endTime" id="3exampleInputEmail1" placeholder="Email"> </div> <div class="form-group"> <lable for="remarkId">备注</lable> <textarea class="form-control" name="remark" id="remarkId"></textarea> </div> </form> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">勾销</button> <button type="button" class="btn btn-primary" onclick="doinsertObject()">确定</button> </div> </div> </div> </div> <table class="table table-bordered"> <thead> <tr> <th>id</th> <th>title</th> <th>category</th> <th>startTime</th> <th>endTime</th> <th>remark</th> <th>state</th> <th>createdTime</th> <th>createdUser</th> </tr> </thead> <tbody id="tbodyId"> <!--要把这里的数据清空 掉 换成加载后的数据 --> <tr> <td>数据正在踊跃的加载中</td> </tr> </tbody> </table> <!-- 主元素 --> </div> <script type="text/javascript" src="/jquery.min.js"></script> <!-- 加载这个插件肯定要把他放在jquery引入的上面 --> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script> <!-- 导入日期哪个表格 --> <script src="/datepicker/js/bootstrap-datetimepicker.min.js"></script> <!-- 设置日期的格局用什么语言显示 --> <script src="/datepicker/js/locales/bootstrap-datetimepicker.zh-CN.js"></script> <script type="text/javascript"> //在指定地位初始化datepicker对像 $(".form_datetime").datetimepicker({//通过类选择器获取的值想让哪个工夫变在哪个name的class指定。form_datetime language:"zh-CN",//定义格局 format:"yyyy/mm/dd hh:ii", autoclose:true }) //基于此形式提交表单,表单中的元素肯定要渔鸥name属性 //并且name属性名的设计肯定要与服务端承受参数时的设计相匹配 function doinsertObject(){ //$("form").submit();//提交数据 //1.定义url反正就是应用异步加载最好是 let url="doinsertObject"; //2.定义情趣参数异步传参数办法 var params={ title:$("#1exampleInputEmail1").val(),//为jaqurey中或制订表单元素的value值 category:$("#categoryId").val(), startTime:$("#2exampleInputEmail1").val(), endTime:$("#3exampleInputEmail1").val(), remark:$("#remarkId").val(), } //serialize()为jquery中间接获取表单数据办法 //var params=$(#form这个是表单的名字)serialize(); //console.log("params",params);输入一下语句//验证参数的值是否存在 //这个是异步加载最好不要同步加载 //3.发送异步申请 $.ajax({ type:"post", url:url, data:params, success:function(result){ alert(result)//提示框 //暗藏模态框 $("#myModal").modal("hide"); //重行执行查问在调用一次查询方法 a(); } }); } //向服务端发送异步申请获取流动信息并更新到页面上 function a(){//如果须要第二次调用就不要应用自调用函数了 let url="doFindActivitys"; let params={};//name=空值 //借助jquery中的ajax函数,向服务器发送异步申请获取流动信息 $.ajax({ url:url, data:params, dataType:"json", success:function(result){ doHandleQueryResult(result);//定义一个办法让上面的定义也能够间接写在这外面 } }); }//这个括号代表函数调用 a(); //解决服务端返回的流动信息//1迭代result,并将result内容填充tbody地位 function doHandleQueryResult(result){ //1获取tbody对象,并清空原有内容 var tBody=$("#tbodyId")//原生写法document。querySelector("#tbodyId"); tBody.empty();//清空原有的内容 //2迭代result,将流动信息追加到tbody中 result.forEach((item)=>{//这里的item为一个变量,代表数组中的冒个元素 tBody.append(//被替换替换后的数据 append增加新的数据; `<tr> <td>${item.id}</td> <td>${item.title}</td> <td>${item.category}</td> <td>${item.startTime}</td> <td>${item.endTime}</td> <td>${item.remark}</td> <td>${item.state==1?"无效":"有效"}</td> <td>${item.createdTime}</td> <td>${item.createdUser}</td> </tr>` ); }); } </script></body></html>

September 21, 2020 · 2 min · jiezi

关于ajax:Ajax获取node服务器数据

1.筹备因为是要将服务器获取的数据放在网页中 所以说对页面的渲染是必要的 这里我筹备的是 art-template模板 2.服务器的筹备服务器要筹备好渲染到页面的数据 3.页面的操作这里我做的的是一个搜寻框提醒性能 解说都在代码正文中 服务器代码如下 // 输入框文字提醒app.get("/searchAutoPrompt", (req, res) => { // 搜寻关键字 const key = req.query.key; // 提醒文字列表 const list = ["百度", "百度官网", "百度游戏", "百度网盘"]; // 搜寻后果 filter是一个遍历的函数 includes(key)是但凡字符串含有key都返回 let result = list.filter((item) => item.includes(key)); // 将查问后果返回给客户端 res.send(result);});页面代码: 上面的代码我用了一个封装好的Ajax函数 代码如下 function ajax (options) { // 默认值 var defaults = { type: 'get', url: '', async: true, data: {}, header: { 'Content-Type': 'application/x-www-form-urlencoded' }, success: function () {}, error: function () {} } // 应用用户传递的参数替换默认值参数 Object.assign(defaults, options); // 创立ajax对象 var xhr = new XMLHttpRequest(); // 参数拼接变量 var params = ''; // 循环参数 for (var attr in defaults.data) { // 参数拼接 params += attr + '=' + defaults.data[attr] + '&'; // 去掉参数中最初一个& params = params.substr(0, params.length-1) } // 如果申请形式为get if (defaults.type == 'get') { // 将参数拼接在url地址的前面 defaults.url += '?' + params; } // 配置ajax申请 xhr.open(defaults.type, defaults.url, defaults.async); // 如果申请形式为post if (defaults.type == 'post') { // 设置申请头 xhr.setRequestHeader('Content-Type', defaults.header['Content-Type']); // 如果想服务器端传递的参数类型为json if (defaults.header['Content-Type'] == 'application/json') { // 将json对象转换为json字符串 xhr.send(JSON.stringify(defaults.data)) }else { // 发送申请 xhr.send(params); } } else { xhr.send(); } // 申请加载实现 xhr.onload = function () { // 获取服务器端返回数据的类型 var contentType = xhr.getResponseHeader('content-type'); // 获取服务器端返回的响应数据 var responseText = xhr.responseText; // 如果服务器端返回的数据是json数据类型 if (contentType.includes('application/json')) { // 将json字符串转换为json对象 responseText = JSON.parse(responseText); } // 如果申请胜利 if (xhr.status == 200) { // 调用胜利回调函数, 并且将服务器端返回的后果传递给胜利回调函数 defaults.success(responseText, xhr); } else { // 调用失败回调函数并且将xhr对象传递给回调函数 defaults.error(responseText, xhr); } } // 当网络中断时 xhr.onerror = function () { // 调用失败回调函数并且将xhr对象传递给回调函数 defaults.error(xhr); }}<script src="/js/ajax.js"></script><script src="/js/template-web.js"></script><script type="text/html" id="tpl"> {{each result}} <li class="list-group-item">{{$value}}</li> {{/each}}</script><script> // 获取搜寻框 var searchInp = document.getElementById('search'); // 获取提醒文字的寄存容器 var listBox = document.getElementById('list-box'); //这里用定时器是为了优化 定时向服务器发送申请 优化了对服务器的压力 // 存储定时器的变量 var timer = null; // 当用户在文本框中输出的时候触发 searchInp.oninput = function () { // 革除上一次开启的定时器 clearTimeout(timer); // 获取用户输出的内容 var key = this.value; // 如果用户没有在搜寻框中输出内容 if (key.trim().length == 0) { // 将提醒下拉框暗藏掉 listBox.style.display = 'none'; // 阻止程序向下执行 return; } // 开启定时器 让申请提早发送 timer = setTimeout(function () { // 向服务器端发送申请 // 向服务器端索取和用户输出关键字相干的内容 ajax({ type: 'get', url: 'http://localhost:3000/searchAutoPrompt', data: { key: key }, success: function (result) { // 应用模板引擎拼接字符串 var html = template('tpl', {result: result}); // 将拼接好的字符串显示在页面中 listBox.innerHTML = html; // 显示ul容器 listBox.style.display = 'block'; } }) }, 800) }</script>

September 19, 2020 · 2 min · jiezi

关于ajax:ajax的核心APIXMLHttpRequest

繁难的ajaxget申请 //get申请const xhr = new XMLHttpRequest()xhr.open("GET","/api",false)//false示意申请形式为异步xhr.onreadystatechange = function () { if(xhr.readyState === 4){ if(xhr.status === 200){ console.log(JSON.parse(xhr.responseText))//转化成json格局 } }}xhr.send(null)post申请 const xhr = new XMLHttpRequest()xhr.open("POST","/login",false)xhr.onreadystatechange = function () { if(xhr.readyState === 4){ if(xhr.status === 200){ console.log(JSON.parse(xhr.responseText)) } }}const postData = { username:'张三', password:'123456'}xhr.send(JSON.stringify(postData))//发送字符串xhr.readyState状态0-(未初始化)还没有调用send()办法1-(载入)已调用send()办法,正在发送申请2-(载入实现)send()办法执行实现,曾经接管到全副响应内容3-(交互)正在解析响应内容4-(实现)响应内容解析实现,能够在客户端调用xhr.status2xx-示意胜利解决申请,如2003xx-重定向,浏览器间接跳转,如301(永恒重定向),302(长期重定向),304(资源未扭转)4xx-客户端申请谬误,如404(申请地址有谬误),403(客户端没有权限)5xx-服务器端谬误

September 18, 2020 · 1 min · jiezi

关于ajax:ajax的常用函数

<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body> <h1>The Jquery ajax</h1><fieldset> <legend>jquery</legend> <button onclick="doGet()">$get(...)</button> <form> 输出:<input type="text" name="name"> <input type="button" onclick="doPost()" value="提交 "> </form> <span id="resultId"></span></fieldset><!-- 引入jquery包 --><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript"> 1.这个是get提交函数; function doGet() { //申请url var url = "/jquery/doAjaxGet"; //申请参数 var params = "msg=hello jquery ahax get method";//将代码转为大写的字母 //发送异步申请 $.get(url, params, function(result) { //document.querySelector("#resultId").innerHTML =result; $("#resultId").html(result);// }) } 2.post提交函数 function doPost() { //申请url var url = "/jquery/doAjaxPost"; //申请参数 var name = document.forms[0].name.value;//获取name的值; var params = "name=" + name;//将代码转为大写的字母 //发送异步申请 $.post(url, params, function(result) { //document.querySelector("#resultId").innerHTML =result; $("#resultId").html(result);// }) } 3.这个是ajax提交函数 function doAjax() { //1.定义申请的url var url = "doAjaxGet"; //2.定义申请的参数 var params = "msg=hello jquery ajax request"; //3.发送异步Get申请 //这里的$符号为jQuery中的一个对象 $.ajax({ //右边的货色是零碎定义的不能轻易乱改 ; type : "GET",//能够省略默认为get申请 url : url, data : params,//无需向服务端传参时能够不写 async : true,//能够补写(由ajax函数neibu基于返回值进行匹配解决) success : function(result) { //解决服务端返回的失常信息 $("#result").html(result); }, error : function(xhr) {//解决服务端返回的异样信息 console.log(xhr.statusText); $("#result").html(xhr.statusText); } }) } 4.这个是load提交函数 function doLoad() { //1.定义申请的url var url = "doAjaxGet"; //2.定义申请的参数 var params = "msg=hello jquery ajax request"; //3.发送异步Get申请 //通过load函数向服务端发送异步申请,将服务端响应的后果异步更新到 //resultId对应的地位 $("#result").load(url);// } </script></body></html> ...

September 16, 2020 · 1 min · jiezi

关于ajax:ajax回掉函数封装共性的详解

<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body> <h1>The Ajax 01</h1><fieldset> <legend>ajax表单申请</legend> <form> <input type="text" name="name" onblur="doCheck()" onfocus="doClear()"> <input type="button" onclick="doSave()" value="Save"> </form> <span id="resultId"></span> <!-- 心愿此地位服务端响应后果 --></fieldset><script type="text/javascript"> //点击框分明残留数据 function doClear() { document.forms[0].name.value = "";//框中数据清空 document.getElementById("resultId").innerHTML = "";//上面提醒数据清空 } //封装共性; function doCheck() { //申请url var url = "doCheck"; //定义申请参数 var name = document.forms[0].name.value;//获取name的值 var params = "name=" + name;//传参数给服务端 //发送异步申请get doAjaxGet(url, params, function(result) {//rsult轻易起的名字这个参数对应上面的callback document.getElementById("resultId").innerHTML = result;//获取下面哪个span元素的参数 }) } //检测名字是否已存在 function doAjaxGet(url, params, callback) { let xhr = new XMLHttpRequest(); //2.定义HR对象的监听 xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { callback(xhr.responseText);// //缓存数据 } } //建设连贯 // 返回的是doCheck然而拼接了name这个值? xhr.open("GET", url + "?" + params, true); //发送申请 xhr.send(null); } //点击事件 封装共性; function doSave() {//另外申明了一个函数 //这个是url的参数 var url = "doSave";//把值传给了url的服务端 //这个是name的参数 let name = document.forms[0].name.value;//获取name的数值 var params = "name=" + name; doAjaxPost(url, params, function(a) { document.getElementById("resultId").innerHTML = a;//获取下面哪个span元素的参数 }) } //点击事件 function doAjaxPost(url, params, callback) {//这里有url的值和name的数值和新定义的一个参数 //1/创立XHR对象 let xhr = new XMLHttpRequest(); //2.定义XHR对象的监听 xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { callback(xhr.responseText);//调用函数 //缓存数据 document.getElementById("resultId").innerHTML = xhr.responseText; } } //3.建设连贯(post须要设置申请头信息) xhr.open("POST", url, true)//异步申请 xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");//这个是设置申请头 //4.发送申请 let name = document.forms[0].name.value;//获取name的值 //构建参数对象三种形式 //var p="name="+name;淘汰 //let p = `name=${name}`;//模板字符串 //var p={"name":name};js对象原生的ajax是不能这样用的 xhr.send(params);//post的申请参数须要写到此地位 //承受name的数值 }</script></body></html> ...

September 15, 2020 · 1 min · jiezi

关于ajax:Ajax技术在Jquery中的应用

jQuery中的罕用的ajax函数ajax(...)get(...)post(...)getJSON(...) jQuery中罕用的Ajax函数利用案例首先在客户端,新构建一个页面,在<body>中引入jquery-min.js文件 <fieldset> <legend>Jquery Ajax function</legend> <button onclick="doGet()">$.get(..)</button> <button onclick="doPost()">$.post(..)</button> <button onclick="doAjax()">$.ajax(..)</button> <button onclick="doLoad()">$.load(..)</button> <span id="resultId"></span> </fieldset> <script type="text/javascript" src="/js/jquery.min.js"></script> 1.get函数利用客户端 function doGet(){ 1.申请url let url ="/jquery/doAjaxGet"; 2.申请参数 let params="msg= hello everyone jiayouya" 3发送异步申请 $.get(url,params,(rusult)=>{ $("#resultId").html(result); });}服务端 @Controller@RequestMapping("/jquery")public class JQueryController { @RequestMapping("/doAjaxGet") @ResponseBody public String doAjaxGet(String msg) { //将客户端传到服务端的字符串转换为大写,而后以字符串的模式响应给客户端 return "Jquery get request result" + msg.toUpperCase(); } }2.post函数利用客户端 function doPost(){ 1.申请url let url ="/jquery/doAjaxPost"; 2.申请参数 let params="title=AAA&&id=10" 3发送异步申请 $.post(url,params,(rusult)=>{ $("#resultId").html(result); });}服务端 @RequestMapping("/doAjaxPost") @ResponseBody public String doAjaxGet(String title,Integer id) { return "Jquery get request result" +title+"/"+id ; }3.ajax函数利用客户端 ...

September 10, 2020 · 1 min · jiezi

关于ajax:Ajax进阶通过构造函数提取共性三元运算符

(()=>{//1.定义一个构造函数var ajax=function(){}//函数表达式(能够将其了解为构造函数)//2.在构造函数外部的原型对象(Prorotype)上增加ajax函数ajax.prototype={ doAjax:function(obj){//obj={type:"GET","url":url,"data":params,async:true,"ContentType":ContentType,"success":success,"error":error} //1.创立xhr对象 const xhr=new XMLHttpRequest(); //2.设置状态监听 xhr.onreadystatechange=function(){ if(xhr.readyState==4){//服务端响应完结,客户端接管胜利 if(xhr.status==200){//200示意失常响应完结 obj.success(xhr.responseText);//回调函数 }else{//示意呈现了异样 obj.error(xhr.status); } }} //3.建设连贯 let type=obj.type?obj.type:"GET"; xhr.open(obj.type,obj.type=="GET"?`${obj.url}?${obj.data}`:obj.url,obj.async?true:obj.async); //4.发送申请 if(type!="GET"){ xhr.setRequestHeader("Content-Type",obj.ContentType?obj.ContentType:"application/x-www-form-urlencoded"); } xhr.send(obj.type=="GET"?null:obj.data); }, doAjaxGet:function(url,params,callback){ this.doAjax({"type":"GET","url":url,"data":params,"success":callback,"error":callback});}, doAjaxPost:function(url,params,callback){ this.doAjax({"type":"POST","url":url,"data":params,"success":callback,"error":callback,"ContentType":"application/x-www-form-urlencoded"}); }} //3.基于ajax构造函数构建ajax对象,并将对象赋值给全局变量window.$$=new ajax();})()html文件中: <!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><h1>The Ajax 05 Page</h1><fieldset><legend>Ajax 表单申请</legend><form> <input type="text" id="nameId" name="name" onblur="doCheck()"> <input type="button" onclick="doSave()" value="Save"></form><span id="resultId"></span><!-- 此地位显示服务端响应后果 --></fieldset><script type="text/javascript" src="/js/ajaxfk2.js"></script><script type="text/javascript"> //检测名字是否已存在 function doCheck(){ //1.定义申请的url var url="http://localhost/doCheck"; //2.定义申请参数 var name=document.forms[0].name.value; var params=`name=${name}`; //3.发送ajax get申请 $$.doAjaxGet(url,params,(result)=>{ document.getElementById("resultId").innerHTML= `<font color=red>${result}</font>`; }); } //保留表单中名字的值 function doSave(){//debugger,log,排除法 //1.申请url const url="http://localhost/doSave"; //2.申请参数 let name=document.forms[0].name.value; let params=`name=${name}`; //3.发送ajax post申请 $$.doAjaxPost(url,params,(result)=>{ alert(result); }) }</script></body></html>

September 8, 2020 · 1 min · jiezi

关于ajax:Ajax编程框架基本实现

咱们在理论编程中常常会以面向对象的形式进行实现。新建static-->js-->ajaxfk.js,在该js文件中增加如下代码: (()=>{//1.定义一个构造函数var ajax=function(){}//函数表达式(能够将其了解为构造函数)//2.在构造函数外部的原型对象(Prorotype)上增加ajax函数ajax.prototype={doAjaxGet:function(url,params,callback){//1.创立xhr对象const xhr=new XMLHttpRequest();//2.设置状态监听xhr.onreadystatechange=function(){ if(xhr.readyState==4){//服务端响应完结,客户端接管胜利 if(xhr.status==200){//200示意失常响应完结 callback(xhr.responseText);//回调函数 }else{//示意呈现了异样 callback(xhr.status); } }}//3.建设连贯xhr.open("GET",`${url}?${params}`,true);//4.发送申请xhr.send(null);},doAjaxPost:function(url,params,callback){//1.创立xhr对象const xhr=new XMLHttpRequest();//2.设置状态监听xhr.onreadystatechange=function(){ if(xhr.readyState==4){//服务端响应完结,客户端接管胜利 if(xhr.status==200){//200示意失常响应完结 callback(xhr.responseText);//回调函数 }else{//示意呈现了异样 callback(xhr.status); } }}//3.建设连贯xhr.open("POST",url,true);xhr.setRequestHeader("Content-Type","application/x-www.urlencoded");//4.发送申请xhr.send(params); }}//3.基于ajax构造函数构建ajax对象,并将对象赋值给全局变量window.$$=new ajax();})()//箭头函数批改html代码: <!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><h1>The Ajax 04 Page</h1><fieldset><legend>Ajax 表单申请</legend><form> <input type="text" id="nameId" name="name" onblur="doCheck()"> <input type="button" onclick="doSave()" value="Save"></form><span id="resultId"></span><!-- 此地位显示服务端响应后果 --></fieldset><script type="text/javascript" src="/js/ajaxfk.js"></script><script type="text/javascript"> //检测名字是否已存在 function doCheck(){ //1.定义申请的url var url="http://localhost/doCheck"; //2.定义申请参数 var name=document.forms[0].name.value; var params=`name=${name}`; //3.发送ajax get申请 $$.doAjaxGet(url,params,(result)=>{ document.getElementById("resultId").innerHTML= `<font color=red>${result}</font>`; }); } //保留表单中名字的值 function doSave(){//debugger,log,排除法 //1.申请url const url="http://localhost/doSave"; //2.申请参数 let name=document.forms[0].name.value; let params=`name=${name}`; //3.发送ajax post申请 $$.doAjaxPost(url,params,(result)=>{ alert(result); }) }</script></body></html>

September 8, 2020 · 1 min · jiezi

关于ajax:Ajax技术进阶封装共性提取特性GetPost采用js文件引入共性

1.在static目录下新建一个js目录,在js目录中增加一个名为ajax.js的文件。将get办法和post办法的ajax共性提取到ajax.js文件,具体代码如下: //封装共性,提取个性//Get办法的共性如下:function doAjaxGet(url,params,callback){//1.基于dom事件创立XHR对象const xhr=new XMLHttpRequest();//2.设置XHR对象监听状态xhr.onreadystatechange=function(){//onreadystatechange存储函数,每当readyState属性扭转时,就会调用该函数 if(xhr.readyState==4&&xhr.status==200){ callback(xhr.responseText); }}//3.创立与服务端的连贯xhr.open("GET",`${url}?${params}`,true);//4.发送异步申请实现与服务端的通信xhr.send(null);//get申请send办法传值} //Post办法的共性如下:function doAjaxPost(url,params,callback){ const xhr=new XMLHttpRequest(); xhr.onreadystatechange=function(){ if(xhr.readyState==4&&xhr.status==200){ callback(xhr.responseText); } } xhr.open("POST",url,true); //应用post申请要设置申请头(规定) xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //4.发送异步申请实现与服务端的通信 xhr.send(params);//Post申请send办法传值}2.在html中引入改js文件,通过增加<script></script>标签引入js文件,具体代码如下: <script type="text/javascript" src="/js/ajax.js"></script>客户端代码: <!-- 客户端代码实现 --><!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><!-- html要害表单元素设计 --><h1>The Ajax 03 Page</h1><!-- 该标签的作用是把表单中的相干控件集中起来,造成一个控件组 --><fieldset> <!--该标签用于定义fieldset标签控件组下的题目 --> <legend>Ajax 表单申请</legend> <form> <input type="text" name="name" id="nameId" onblur="doCheck()" onfocus="doClear()"> <input type="button" onclick="doSave()" value="save"> </form> <span id="result"></span></fieldset><!--增加JS要害业务代码 --><!-- script标签用于定义客户端脚本 script元素既能够蕴含脚本语句,也能够通过 src 属性指向内部脚本文件。--><script type="text/javascript" src="/js/ajax.js"></script><script type="text/javascript">//检测名字是否曾经存在 function doClear(){ //示意能向id为result的对象插入“”内容 document.getElementById("result").innerHTML="";} //Get办法的个性function doCheck(){ //1.定义申请的url const url="/doCheck"; //2.定义申请参数 let name=document.forms[0].name.value; let params=`name=${name}`; //3.发送ajax-get申请 doAjaxGet(url,params,function(result1){ document.getElementById("result").innerHTML=`${result1}`; });}//保留表单中名字的值function doSave(){ //1.定义申请的url const url="/doSave"; //2.定义申请参数 let name=document.forms[0].name.value; let params=`name=${name}`; //3.发送ajax-get申请 doAjaxPost(url,params,function(result1){ alert(result1);//响应后果不同的解决形式 });} </script></body></html>服务端代码: ...

September 8, 2020 · 1 min · jiezi

关于ajax:Ajax技术进阶提取共性封装特性Get

<!-- 客户端代码实现 --> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <!-- html要害表单元素设计 --> <h1>The Ajax 03 Page</h1> <!-- 该标签的作用是把表单中的相干控件集中起来,造成一个控件组 --> <fieldset> <!--该标签用于定义fieldset标签控件组下的题目 --> <legend>Ajax 表单申请</legend> <form> <input type="text" name="name" id="nameId" onblur="doCheck()" onfocus="doClear()"> <input type="button" onclick="doSave()" value="save"> </form> <span id="result"></span> </fieldset> <!--增加JS要害业务代码 --> <!-- script标签用于定义客户端脚本 script元素既能够蕴含脚本语句,也能够通过 src 属性指向内部脚本文件。--> <script type="text/javascript"> function doClear(){ document.getElementById("result").innerHTML=""; } //检测名字是否曾经存在 //Get办法的个性 function doCheck(){ var url="/doCheck"; var name=document.forms[0].name.value; var params="name="+name; doAjaxGet(url.params,function(result){ document.getEmlementById("result").innerHTML=result; }) } //在业务办法中利用封装好的代码,保留业务的要害客户端代码剖析及实现 function doSave(){ var url="/doSave"; var params="name="+document.forms[0].name.value; //发送申请 doAjaxGet(url,params,function(result){ document.getElementById("result").innerHTML=result; }) } //封装共性,提取个性 //提取get办法的共性进行封装: function doAjaxGet(url,params,callback){ const xhr=new XMLHttpRequest(); xhr.onreadstatechange=function(){ if(xhr.onreadyState==4&&xhr.status==200){ callback(xhr.responseText); } } xhr.open("GET",url+"?"+params,true); xhr.send(null); } </script> </body> </html>服务端代码实现: ...

September 8, 2020 · 1 min · jiezi

关于ajax:Ajax的入门

Ajax是什么? Ajax是一种web利用技术,能够借助客户端脚本(JavaScript)与服务端利用进行异步通信,获取服务端数据当前,能够进行部分刷新,进而进步数据的响应和渲染速度。Ajax劣势和劣势? 劣势:底层同步,而后部分刷新,进而进步用户体验。Ajax能够仅向服务器发送并取回必要的数据,并在客户端采纳JS解决来自服务器的响应,这样在服务器和浏览器之间的替换数据会大量缩小,服务器响应的数据就会更快了。劣势:不能间接进行跨域拜访。传统web利用中的同步申请利用时序模型剖析: 客户端向服务器端发送申请须要期待服务器的响应后果,服务器返回数据当前,客户端能够持续发送申请。如上图:客户端发送申请1给服务端,服务端接管到当前返回响应后果2给客户端,客户端在发送申请当前到服务端响应的过程就是一个等待时间。基于Ajax技术的web异步申请响应利用时序模型剖析 客户端能够向服务器发送异步申请,客户端无需期待服务端的响应后果,能够一直的发送申请。如上图:客户端能够发送1和2两个申请到服务端,无需期待服务端一个一个的响应后再发送,即为异步。Ajax申请响应过程剖析所有的Ajax申请都会基于DOM事件,通过XHR(XMLHttpRequest)对象实现与服务端异步通信部分更新。基于上图的剖析,编程步骤如下:第一步:基于dom事件创立XHR对象;第二步:注册XHR对象状态监听,通过回调函数(rollback)解决状态信息;第三步:创立与服务端的连贯;第四步:发送异步申请实现与服务端的通信。

September 5, 2020 · 1 min · jiezi

关于ajax:Ajax-小结02

Ajax 申请响应过程剖析*所有的Ajax 申请都会基于DOM(HTML元素)事件,通过XHR(XMLHttpRequest)对象实现与服务端异步通信部分更新*Ajax利用的编程步骤:第一步:基于dom事件创立XHR对象(XMLHttpRequest对象) var xhr=new XMLHttpRequest();第二步:注册XHR对象状态监听,通过回调函数(callback)解决状态信息。 xhr.onreadystatechange=function(){ if(xhr.readyState==4&&xhr.status==200){ document.getElementById("resultId"). innerHTML= xhr.responseText; } }*readyState==4示意服务端的响应后果在客户端曾经接管完了*status==200示意服务解决申请的过程中没有呈现任何异样(响应的都是失常数据) 第三步:创立与服务端的连贯 xhr.open("GET",`doCheck?name=${name}`,true)*doCheck?name=${name}--是所要连贯服务端的网址第四步:发送异步申请实现与服务端的通信 xhr.send(null);*构建参数对象 形式1: var params="name="+name;//淘汰形式2: const params=`name=${name}`;//一种新的写法,这种写法称之为模板字符串,所有字符串拼接都能够以这种形式进行实现形式3: var params={"name":name};//JavaScript中的对象(原生ajax形式不能够间接传递这样的对象) *JavaScript中的对象个性 封装个性: JS中的对象用于封装属性和办法 继承个性: JS中为了实现属性或办法的可重用性,提供须要借助Prototype对象去实现的形式(继承机制) 多态个性 基于构造函数创建对象构造雷同(属性名、办法名雷同,属性值不同)的多个对象在定义时,能够将构造封装到构造方法构造函数尽量不要定义函数--因为构建对象时,构造函数外部的函数还要开拓新的空间

September 4, 2020 · 1 min · jiezi

关于ajax:Ajax初探

所有的Ajax 申请都会基于DOM(HTML元素)事件,通过XHR(XMLHttpRequest)对象实现与服务端异步通信部分更新 特点:异步申请,Ajax技术最大的劣势就是基于多线程实现的底层异步,实现部分刷新,其能够在不烦扰主线程过程的前提下处理事务,并在页面部分刷新进去,在页面上的成果相似于实时更新,在线程足够短缺的现实状态下客户端能够一值一直的向服务端发送申请而不用期待服务端的响应持续运行

September 3, 2020 · 1 min · jiezi

关于ajax:浅谈AJAX入门技术

1 Ajax是什么?Ajax (Asynchronous JavaScript and XML) 是一种Web利用技术,能够借助客户端脚本(javascript)与服务端利用进行异步通信,获取服务端数据当前,能够进行部分刷新。进而进步数据的响应和渲染速度。(异步申请,部分刷新) 2 Ajax技术的利用场景Ajax技术最大的劣势就是底层异步,而后部分刷新,进而进步用户体验,这种技术当初在很多我的项目中都有很好的利用: 例如:商品零碎,评估零碎,地图零碎.... 3 Ajax技术时序模型剖析 客户端能够向服务器端发送异步申请,客户端无需期待服务端的响应后果,能够 一直向服务器端发送申请。 4 Ajax申请响应过程剖析4.1 服务端代码设计 @Controller@RequestMapping("/")public class AjaxController { @RequestMapping("doAjaxGet") @ResponseBody //通知spring mvc 此办法的返回值不是viewname,能够将其看成是一般串 public String doAjaxGet() throws Exception { return "Ajax Get Request Result "; }}4.2 客户端代码设计第一步:基于dom事件创立XHR对象(XMLHttpRequest对象) var xhr = new XMLHttpRequest();第二步:注册XHR对象状态监听,通过回调函数解决状态信息 xhr.onreadystatechange=function(){ if(xhr.readyState==4&&xhr.status==200){ console.log(xhr.responseText); document.getElementById("resultId").innerHTML=xhr.responseText; }};第三步:创立 与服务端的连贯 xhr.open("GET","http://localhost/doAjaxGet",true);第四步:发送申请 xhr.send();

September 2, 2020 · 1 min · jiezi

关于ajax:ajax

var xhr=new XMLHttpRequest();1.创立ajax入口对象 xhr.onreadystatechange=function(result){ if(xhr.readyState==4&&xhr.status==200){ console.log(xhr.responseText); }}2.注册事件监听(监听客户端与服务端通信过程) 1open之前2open之后send之前3正在解析响应内容~~~~4表数据响应到客户端xhr.open("get","https://www.baidu.com/","true");3.建设与指定url对应的服务端的连贯这里的true示意异步 xhr.send(null);4.发送申请

September 2, 2020 · 1 min · jiezi

关于ajax:Ajax入门

一、什么是ajaxAjax (Asynchronous JavaScript and XML) 是一种 Web 利用技术,能够借助客户端脚本(javascript)与服务端利用进行异步通信,获取服务端数据当前,能够进行部分刷新。进而进步数据的响应和渲染速度。二、Ajax利用场景1.2Ajax的利用场景:1.2.1 查看用户名是否已被注册:很多站点的注册页面都具被自动检测用户名是否存在的敌对提醒,该性能整体页面并没有刷新,但依然能够异步与服务器进行数据交换,查问用户输出的用户名是否存在数据库。 1.2.2 省市级联下拉框联动:很多站点都存在输出用户地址的操作,在实现地址输出时,用户所在的省份是下拉框,当抉择不同的省份时会呈现不同市区的抉择,这就是最常见的省市联动成果。  1.2.3 内容主动补全:不论时专一于搜寻的百度,还是站点内商品搜寻的淘宝,都有搜寻的性能,在i搜寻框输出查问关键字时,整个页面没有刷新,但会依据关键字显示相干查问字条,这个过程是异步的。 百度的搜寻补全性能: 淘宝的搜寻补全性能: 1.3 同步形式与异步形式的区别:同步形式发送申请:发送一个申请,须要期待响应返回,而后才可能发送下一个申请,如果该申请没有响应,不能发送下一个申请,客户端会始终处于期待过程中。异步形式发送申请:发送一个申请,不须要期待响应返回,随时能够再发送下一个申请,即不须要期待。async:true; //异步async:false; //同步1.4 Ajax的原理剖析:Ajax 相当于浏览器发送申请与接管响应的代理人,以实现在不影响用户浏览页面的状况下,部分更新页面数据,从而进步用户体验。 三、Ajax的外围机制:XMLHttpRequest是ajax的外围机制次要属性和办法:1.readyState属性 状态:0    未初始化1    筹备发送2    已发送但还未收到响应3    正在承受4    承受实现2.responseText属性 服务器响应的文本内容    联合readyState属性来看: readyState = 4 时,responseText才蕴含残缺的响应信息 readyState = 3 时,responseText蕴含不残缺的响应信息 readyState < 3 时,responseText为空字符串3.responseXML属性 服务器响应的XML内容对应的DOM对象4.status属性(服务器返回的http的状态码)及statusText属性(状态码的文本信息) status = 200    胜利 status = 404 未找到 status = 500 服务器外部谬误5.onreadystatechange事件 ...

September 2, 2020 · 1 min · jiezi

关于ajax:Ajax基础

Ajax 概述它是浏览器提供的一套办法,能够实现页面无刷新更新数据,进步用户浏览网站利用的体验。 Ajax 的利用场景 页面上拉加载更多数据 列表数据无刷新分页 表单项来到焦点数据验证 搜寻框提醒文字下拉列表Ajax 运行原理及实现Ajax 运行原理 Ajax 相当于浏览器发送申请与接管响应的代理人,以实现在不影响用户浏览页面的状况下,部分更新页面数据,从而进步用户体验。 Ajax 的实现步骤 创立 Ajax 对象 var xhr = new XMLHttpRequest();通知 Ajax 申请地址以及申请形式xhr.open('get', 'http://www.example.com');发送申请 xhr.send();获取服务器端给与客户端的响应数据xhr.onload = function () { console.log(xhr.responseText); }服务器端响应的数据格式 在实在的我的项目中,服务器端大多数状况下会以 JSON 对象作为响应数据的格局。当客户端拿到响应数据时,要将 JSON 数据和 HTML 字符串进行拼接,而后将拼接的后果展现在页面中。 在 http 申请与响应的过程中,无论是申请参数还是响应内容,如果是对象类型,最终都会被转换为对象字符串进行传输。 JSON.parse() // 将 json 字符串转换为json对象申请参数传递 传统网站表单提交 <form method="get" action="http://www.example.com"> <input type="text" name="username"/> <input type="password" name="password"> </form> <!– http://www.example.com?username=zhangsan&password=123456 -->GET 申请形式 xhr.open('get', 'http://www.example.com?name=zhangsan&age=20');POST 申请形式 xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') xhr.send('name=zhangsan&age=20');申请报文 在 HTTP 申请和响应的过程中传递的数据块就叫报文,包含要传送的数据和一些附加信息,这些数据和信息要恪守规定好的格局。 申请参数的格局 ...

September 2, 2020 · 1 min · jiezi

关于ajax:ajax提交参数

进行Ajax申请时,须要传递URL地址/参数/回调函数这三个次要内容,以及其余的一些内容. 其中ajax提交参数有以下两种办法: $.post("url",{k:v,k:v...},回调函数)$.post("url",k=v&k=v...,回调函数)然而如果表单中提供了大量的要传递的参数时,用这种一个一个拼接去写的形式就很不不便, jQuery中提供了 serialize() 函数,能够将整个表单封装为k=v&k=v...的格局.

August 31, 2020 · 1 min · jiezi

关于ajax:初识Ajax

Ajax (Asynchronous JavaScript and XML) 是一种Web利用技术,能够借助客户端脚本(javascript)与服务端利用进行异步通信,获取服务端数据当前,能够进行部分刷新。进而进步数据的响应和渲染速度。 Ajax技术最大的劣势就是底层异步,而后部分刷新,进而进步用户体验。 Ajax编程的根本步骤分4步 <script type="text/javascript"> function doAjaxGet() { //1.创立XHR对象 var xhr = new XMLHttpRequest(); //2.设置状态监听 xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { console.log(xhr.responseText); } } //3.建设连贯 xhr.open("GET", "/doAjaxGet", true); //true示意异步(底层会启动线程与服务端通信) //4.发送申请 xhr.send(); }</script>以下为图解

August 10, 2020 · 1 min · jiezi

关于ajax:ajax

ajax 的根本步骤1.注册 var xhr = new XMLHttpRequest();2.设置监听 xhr.onreadystatechange=function(){ if(xhr.readyState==4&&xhr.status==200){ console.log(xhr.responseText); }}3.连贯 xhr.open("GET","https:www.baidu.com",true);//true示意异步4.发送 xhr.send();post 申请须要申请头//post申请要设置申请头xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");xhr.send("name="+name);post申请和get申请不同之处在一个是在url传值一个是在send()中传值,post申请须要设置申请头为了减少代码的可重用性所以须要把xhr共性进行封装应用传值的模式来应用ajaxfunction submit(url,parmeter,callback){ var xxhyp = new XMLHttpRequest(); xxhyp.onreadystatechange=function(){ if(xxhyp.readyState==4&&xxhyp.status==200){ callback(xxhyp.responseText); } }xxhyp.open("POST",url,true);//post申请要设置申请头xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");xxhyp.send(parmeter);}//须要应用时代码示例function chaer(){var url = "dopost";var parmeter = "msg";submit(url,parmeter,function(result){ document.ElementById("loadid").innerHTNL=result; }); }//callback和function(result)造成了函数的回调~~~~//get申请相似Jquery-ajax先得引入jquery的包哦1.应用jquery-ajax的get申请 function doget(){var url = "dopost";var parmeter = "msg"; $.get(url,parmeter,function(result){ $("#loadid").html(result); }); }//get(url,params[,dataType])为jquery种的一个ajax函数,dataType--冀望然会的类型2.应用jquery-ajax的post申请 function dopost(){var url = "dopost";var parmeter = "msg"; $.get(url,parmeter,function(result){ $("#loadid").html(result);~~~~ }); }3.应用jquer原生的ajax function doajax(){ var url = "doget"; var parmeter = "msg"; $.ajax({ url:url, //url type:"GET", //指定提交办法 async:true, //指定异步还是同步 data:parmeter, //指定参数 success:function(result){ $("#loadid").html(result);~~~~ } });}4.应用load形式 ...

August 9, 2020 · 1 min · jiezi

关于ajax:ajax

ajax 的根本步骤1.注册 var xhr = new XMLHttpRequest();2.设置监听 xhr.onreadystatechange=function(){ if(xhr.readyState==4&&xhr.status==200){ console.log(xhr.responseText); }}3.连贯 xhr.open("GET","https:www.baidu.com",true);//true示意异步4.发送 xhr.send();post 申请须要申请头//post申请要设置申请头xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");xhr.send("name="+name);post申请和get申请不同之处在一个是在url传值一个是在send()中传值,post申请须要设置申请头为了减少代码的可重用性所以须要把xhr共性进行封装应用传值的模式来应用ajaxfunction submit(url,parmeter,callback){ var xxhyp = new XMLHttpRequest(); xxhyp.onreadystatechange=function(){ if(xxhyp.readyState==4&&xxhyp.status==200){ callback(xxhyp.responseText); } }xxhyp.open("POST",url,true);//post申请要设置申请头xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");xxhyp.send(parmeter);}//须要应用时代码示例function chaer(){var url = "dopost";var parmeter = "msg";submit(url,parmeter,function(result){ document.ElementById("loadid").innerHTNL=result; }); }//callback和function(result)造成了函数的回调~~~~//get申请相似Jquery-ajax先得引入jquery的包哦1.应用jquery-ajax的get申请 function doget(){var url = "dopost";var parmeter = "msg"; $.get(url,parmeter,function(result){ $("#loadid").html(result); }); }//get(url,params[,dataType])为jquery种的一个ajax函数,dataType--冀望然会的类型2.应用jquery-ajax的post申请 function dopost(){var url = "dopost";var parmeter = "msg"; $.get(url,parmeter,function(result){ $("#loadid").html(result);~~~~ }); }3.应用jquer原生的ajax function doajax(){ var url = "doget"; var parmeter = "msg"; $.ajax({ url:url, //url type:"GET", //指定提交办法 async:true, //指定异步还是同步 data:parmeter, //指定参数 success:function(result){ $("#loadid").html(result);~~~~ } });}4.应用load形式 ...

August 9, 2020 · 1 min · jiezi

关于ajax:AJAX总结一

AJAX总结电脑系统 windows10 专业版在开发的过程中,咱们依据需要可能会应用到 ajax,上面是我对ajax的一些总结,心愿对大家有所帮忙!作用:部分异步刷新网页 异步申请:申请数据的时候不会影响页面的其余操作申请分两种异步同步前后端交互的形式1、form(表单提交): 2、标签拜访(src href) 3、AJAX AJAX的同步申请步骤 1、创立申请对象 var xhr; if(window.XMLHttpRequst){ xhr=new XMLHttpRequst(); }else{ //IE 5 6 7兼容 xhr=new ActiveXObject('Microsoft.XMLHTTP'); } 2、启动申请 open(参数一,参数二,参数三):用于设置申请形式和地址 参数一:申请形式 参数二:申请的url 参数三:是否异地发送,默认为true(异地),false为同步 留神:open()的办法只是设置相干的申请信息,并不会真正发动申请 //同步申请 xhr.open('get',"http://localhost/self/AJAX-1/server.php?un=" + $("#user")\[0\].value + "&ps=" + $("#pass")[0].value",false); //异步申请 xhr.open('post',"",true) 3、发送申请 send() 发送申请 参数要传输给后盾的数据,如果是get申请参数为null(不倡议省略该参数,低版本火狐浏览器会报错) xhr.send(null); 4、申请胜利之后 status:http申请状态码 1XX:信息类状态,收到申请,正在解决 2XX:胜利类状态,胜利解决实现 3XX:重定向类状态,求情地址发生变化(304代表读缓存文件) 4XX:客户端谬误, 5XX:服务器端谬误,服务器辨认不出信息,不能对申请作出解决 //同步申请 if(xhr.status >= 200 && xhr.status < 300 || 304 == xhr.status){ responseText//作为响应主体反映(后盾返给咱们的数据) responseXML//如果响应的数据类型为text/xml或者application/xml,此属性中保留 //后盾传输进来的数据 } 异步申请 ...

August 7, 2020 · 2 min · jiezi

关于ajax:Contenttype的几种常见类型

1、application/x-www-form-urlencoded 1)浏览器的原生 form 表单 2)提交的数据依照 key1=val1&key2=val2 的形式进行编码,key 和 val 都进行了 URL 转码 3) 数据被编码为名称/值对。这是规范的编码格 2、multipart/form-data 须要在表单中进行文件上传时,就须要应用该格局。常见的媒体格式是上传文件之时应用的 3、application/json 音讯主体是序列化后的 JSON 字符串 4、text/xml 是一种应用 HTTP 作为传输协定,XML 作为编码方式的近程调用标准 5、text/plain 数据以纯文本模式(text/json/xml/html)进行编码,其中不含任何控件或格局字符 #application/json 和 application/x-www-form-urlencoded 的区别application/json: 作用: 通知服务器申请的主题内容是 json 格局的字符串,服务器端会对 json 字符串进行解析, 益处: 前端人员不须要关怀数据结构的复杂度,只有是规范的 json 格局就能提交胜利。 application/x-www-form-urlencoded: 是 Jquery 的 Ajax 申请默认形式 作用:在申请发送过程中会对数据进行序列化解决,以键值对模式?key1=value1&key2=value2 的形式发送到服务器 益处: 所有浏览器都反对

July 28, 2020 · 1 min · jiezi

关于ajax:ajax防抖节流

什么是防抖防抖策略 (debounce)当事件被触发时,提早N秒才执行,如果在这N秒内再次被触发将从新计时益处 :可能保障用户在频繁触发某些事件的时候,不会频繁的执行回调,只会被执行一次防抖的利用场景用户在输入框中间断输出一串字符时,能够通过防抖策略,只在输出完后,才执行查问的申请,这样能够无效缩小申请次数,节约申请资源; 什么是节流节流策略(throttle),顾名思义,能够缩小一段时间内事件的触发频率。节流的利用场景① 鼠标连续不断地触发某事件(如点击),只在单位工夫内只触发一次;② 懒加载时要监听计算滚动条的地位,但不用每次滑动都触发,能够升高计算的频率,而不用去节约 CPU 资源;节流阀的概念高铁卫生间是否被占用,由红绿灯管制,红灯示意被占用,绿灯示意可应用。假如每个人上卫生间都须要破费5分钟,则五分钟之内,被占用的卫生间无奈被其他人应用。上一个人应用结束后,须要将红灯重置为绿灯,示意下一个人能够应用卫生间。下一个人在上卫生间之前,须要先判断管制灯是否为绿色,来通晓是否上卫生间。节流阀为空,示意能够执行下次操作;不为空,示意不能执行下次操作。以后操作执行完,必须将节流阀重置为空,示意能够执行下次操作了。每次执行操作前,必须先判断节流阀是否为空。 总结防抖和节流的区别防抖:如果事件被频繁触发,防抖能保障只有最有一次触发失效!后面 N 屡次的触发都会被疏忽!节流:如果事件被频繁触发,节流可能缩小事件触发的频率,因而,节流是有选择性地执行一部分事件!

July 26, 2020 · 1 min · jiezi

关于ajax:ajax防抖节流

什么是防抖防抖策略 (debounce)当事件被触发时,提早N秒才执行,如果在这N秒内再次被触发将从新计时益处 :可能保障用户在频繁触发某些事件的时候,不会频繁的执行回调,只会被执行一次防抖的利用场景用户在输入框中间断输出一串字符时,能够通过防抖策略,只在输出完后,才执行查问的申请,这样能够无效缩小申请次数,节约申请资源; 什么是节流节流策略(throttle),顾名思义,能够缩小一段时间内事件的触发频率。节流的利用场景① 鼠标连续不断地触发某事件(如点击),只在单位工夫内只触发一次;② 懒加载时要监听计算滚动条的地位,但不用每次滑动都触发,能够升高计算的频率,而不用去节约 CPU 资源;节流阀的概念高铁卫生间是否被占用,由红绿灯管制,红灯示意被占用,绿灯示意可应用。假如每个人上卫生间都须要破费5分钟,则五分钟之内,被占用的卫生间无奈被其他人应用。上一个人应用结束后,须要将红灯重置为绿灯,示意下一个人能够应用卫生间。下一个人在上卫生间之前,须要先判断管制灯是否为绿色,来通晓是否上卫生间。节流阀为空,示意能够执行下次操作;不为空,示意不能执行下次操作。以后操作执行完,必须将节流阀重置为空,示意能够执行下次操作了。每次执行操作前,必须先判断节流阀是否为空。 总结防抖和节流的区别防抖:如果事件被频繁触发,防抖能保障只有最有一次触发失效!后面 N 屡次的触发都会被疏忽!节流:如果事件被频繁触发,节流可能缩小事件触发的频率,因而,节流是有选择性地执行一部分事件!

July 26, 2020 · 1 min · jiezi

关于ajax:ajax请求本地json文件总是走error的原因

$.ajax({ url: "data.json",//json文件地位,文件名 type: "GET",//申请形式为get dataType: "json", //返回数据格式为json success: function(data) {//申请胜利实现后要执行的办法 console.log(data,'胜利') }, error: function(data){ console.log(data,'谬误') }})首先ajax这样的申请设置没有问题的状况下,要查看:①json文件外面不能有任何的正文②json文件有中文,而且不是utf8格局,能够用文本关上当前在设置一下utf8格局即可 然而json文件的中文乱码临时还未解决,如果有人领导,请帮忙留言领导

July 24, 2020 · 1 min · jiezi

Ajax提交表单的方式

和提交一般表单一样发送数据浏览器端代码$("#ajaxform").click(function () { //在咱们像提交表单一样发送数据时,不必把JSON对象转换为JSON字符串 var requestBody = { "empId":999, "empName":"harry", "empSalary":128.56 }; $.ajax({ "url":"ajax/send/form/data.action", // 申请的指标地址 "type":"post", // 申请形式 "data":requestBody, // 申请体数据 "contentType":"application/x-www-form-urlencoded", //默认值,能够省略该项 "dataType":"json", // 服务器端返回数据的解析形式 "success":function(response) { // 服务器解决申请胜利,执行这个函数,响应体从参数这里传入 // response曾经解析为JSON对象,能够间接应用“.属性名”形式拜访具体属性 var result = response.result; // 如果返回后果胜利,显示胜利(逻辑胜利) if("SUCCESS" == result) { alert("SUCCESS"); } // 如果返回后果失败,显示音讯(逻辑失败) if("FAILED" == result) { var message = response.message; alert(message); } }, "error":function(response){ // 解决申请失败,例如:404、500、400等等 alert(response); } }); }); 应用开发者工具查看申请体 ...

July 12, 2020 · 1 min · jiezi

Ajax配合后端实现Excel的导出

一、需求在我们的日常开发中,可能经常需要遇到excel的导出,以往excel的导出服务器端都是使用的 GET 方法,但是某些情况下,服务器端只能使用 POST 方法,那么我们有没有好的方法实现excel的导出呢,并且页面最好不要刷新。 二、实现思路1、方案一:我们可以使用ajax拿到服务器端返回的 数据下载流,然后借助 Blob 对象,在动态的创建一个 a 链接,那么也可以实现。2、方案二:动态创建一个 iframe 标签下载,这种方案可以POST请求可能就无法下载了。 3、方案三:页面上动态的创建一个form然后提交这个form。 此处我们使用 方案一 即使用 ajax 来实现。 三、实现步骤1、ajax请求的发送我们使用axios库来完成,axios的responseType需要设置成Blob,默认是json。 2、创建 Blob对象 3、创建a标签 4、触发下载动作 四、前端代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>ajax 文件导出</title> <script src="https://unpkg.com/axios/dist/axios.min.js"></script></head><body><button type="button" onclick="exportExcel()">导出</button><script type="text/javascript"> function exportExcel() { axios({ method: 'POST', url: "http://localhost:8080/export", timeout: 5000, responseType: 'blob' }).then(function (res) { var data = res.data; var blob = new Blob([data], {type: 'application/octet-stream'}); var url = URL.createObjectURL(blob); var exportLink = document.createElement('a'); exportLink.setAttribute("download","ajax文件下载.xlsx"); exportLink.href = url; document.body.appendChild(exportLink); exportLink.click(); }) }</script></body></html>实现效果 ...

June 25, 2020 · 1 min · jiezi