首页 > 其他分享 >Ajax

Ajax

时间:2023-04-16 13:57:06浏览次数:27  
标签:浏览器 请求 Ajax xhr ajax 页面

Ajax

一Ajax概述

  1. ajax全名 asynchronous javascript and XML ( 异步JavaScript 和 XML )

  2. ajax 不是新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术

  3. ajax 是前后台交互的能力,也就是我们客户端给服务端发送消息的工具,以及接收响应的工具

  4. ajax 通过在后台与服务器进行少量的数据交换,实现了在无需重新加载整个页面的情况下,更新页面局部数据的技术

  5. ajax 是一个默认异步执行机制的功能,其分为同步(async=false)和异步(async=true)

    • 什么是同步请求

      /* 同步请求是指当前发出请求后,浏览器什么都不能做,必须得等到请求完成返回数据后,才会执行后续的代码,也就是说,当JS代码加载到当前ajax的时候会把页面里所有的代码停止加载,页面处于一个假死状态,当这个ajax执行完毕后才会继续运行其他代码,页面解除假死状态 */
      
    • 什么是异步请求(默认)

      /* 异步请求就是当发出请求的同时,浏览器可以作任何事,ajax发送的请求并不会影响页面的加载和用户的操作,不会影响到用户的体验效果 */
      

二.Ajax的优缺点

1.优点

  • 不需要插件的支持,原生的JS就可以实现
  • 不需要刷新页面就可以更改数据
  • 异步与服务器通信:优化了Browser和Server之间的沟通,减少了不必要的数据传输、时间及降低网络上数据流量
  • 前端和后端负载平衡:Ajax 可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本;Ajax的原则是“按需取数据”,可以最大程度减少冗余请求和响应对服务器造成的负担,提升站点性能
  • 基于标准被广泛支持:Ajax 基于标准化的并被广泛支持的技术,不需要下载浏览器插件或者小程序,但需要用户允许JavaScript在浏览器上的执行
  • 界面与应用分离:也就是说数据与呈现分离,有利于分工合作,减少非技术人员对页面的修改造成的WEB应用程序的错误、提高效率、也更加适用于现在的发布系统

2.缺点

  • 对搜索引擎支持较弱:如果使用不当,Ajax会增大网络数据流量,从而降低整个系统的性能
  • 如果客户禁用JS,网站就取不到数据

三.Ajax的使用

1.运用原理

2.具体操作流程

  • 首先通过PHP页面将数据库中的数据取出
  • 取出后转成json格式的字符串,后利用ajax把字符串返还给前台
  • 在利用 json.parse解析通过循环添加到页面上
  • 那么反之,前端的数据可以利用 ajax 提交到后台
  • 但是后台是没有办法直接把这些数据插入到数据库中的,所以要先提交到PHP页面上
  • 最后又PHP将数据插入到数据库中

3.使用步骤

3.1 XMLHttpRequest 对象

  • XMLHttpRequest 是浏览器接口对象,该对象的API可被JavaScript、VBScript 以及其他 web 浏览器内嵌的脚本语言调用,通过 HTTP 协议在浏览器和 web 服务器之间收发 XML 或其他数据。XMLHttpRequest 可以与服务器实现异步交互,而无需让整个页面刷新,因此成为 Ajax 编程的核心对象

  • XMLHttpRequest 对象属性描述(用于和服务器交换数据)

3.2 Ajax 的使用步骤

//1.创建 XMLHttpRequest 对象
var xhr = new XMLHttpRequest();
//2.给定请求方式、请求地址以及是否异步(默认为true表异步)
xhr.open("get","url地址");
//3.发送请求
xhr.send();
//4.获取服务器端给客户端的响应数据
xhr.onreadystatechange = function(){
    if(xhr.readyState ==4 && xhr.status == 200){
        //JSON.parse()方法实现JSON字符串转换为JS对象
        var info = JSON.parse( xhr.responseText );
    }
}

3.3 Get/Post请求

  • get 请求一般用来请求获取数据,post 请求一般作为发送数据到后台,传递数据,创建数据
  • get 请求也可以传参到后台,但是传递的参数则显示在地址栏,安全性低,且参数的长度也有限制(2048字符);post请求则是将传递的参数放在 request body 中,不会在地址栏显示,安全性比get请求,参数没有长度限制
  • get 请求刷新浏览器或者回退没有影响,post请求则会重新请求一遍
  • get 请求可以被缓存,也会保留在浏览器的历史纪录中;post 请求不会被缓存,也不会保留在浏览器的历史纪录中
  • get 请求通常是通过 url 地址请求,post 常见的则是 form 表单请求

3.4 Ajax 状态码

  • Ajax 状态码(xhr.readyState):是用来表示一个 ajax 请求的全部过程中的某一个状态

    /*
    0:请求未初始化,也就是 open 方法还未执行
    1:服务器连接已建立,即 open 方法已被执行完
    2:请求已接收,表示 send 方法已 执行完成
    3:请求处理中即正在解析响应内容
    4:请求已完成,且响应已就绪;也就是说内容解析完毕,可以在客户端使用
    */
    
  • 这时候我们会发现,在一个 ajax 请求的全部过程中,只有当 readyState == 4 的时候,我们才可以正常使用服务端给我们的数据

  • 且配合 http 状态码为 200 ~ 299

    /* 一个 ajax 对象中有一个成员叫做 xhr.statue ,这个成员就是记录本次请求的 http 状态码的 */
    
  • 俩个条件都满足的时候,才是本次请求正常完成

3.5 readyStateChange

  • 在 ajax 对象中有一个事件,叫 readyStateChange事件
  • 这个事件是专门用来监听 ajax 对象的 readyState 值改变的行为
  • 即只要 readyState 的值发生改变就触发该事件
  • 因此我们就在该事件中监听 readyState、status 的值

3.6 解析主体

  • xhr.responseText :获得字符串形式的响应数据
  • xhr.responseXML:获得 XML 形式的响应数据

标签:浏览器,请求,Ajax,xhr,ajax,页面
From: https://www.cnblogs.com/xiaoyaoya520/p/17323182.html

相关文章

  • ajax面试题总结
    转载请注明出处:1.ajax异步和同步的区别Ajax是一种基于JavaScript语言和XMLHttpRequest对象的异步数据传输技术,通过它可以使不用刷新整个页面的情况下,对页面进行部分更新。同步和异步是指客户端发送请求时,主线程是否会阻塞等待服务器的响应返回。同步请求在发送请......
  • ajax使用回调函数的例子(原生代码和jquery代码)
    ajax使用回调函数的例子(原生代码和jquery代码)一、 ajax代码存在的问题(异步交互的问题)ajax所请求的url,如果因为网络等问题,很久没有回应,则给用户造成“假死”的现象。代码如下:xmlHttp=GetXmlHttpObject();xmlHttp.open();xmlHttp.send();//下面这句,会一直等待,直到有返回值......
  • Ajax_中文乱码总结
    1.发送路径中的参数有中文,在服务器段接收参数值是乱码解决办法:前端(客户端)两次编码,后端(服务器)一次解码!前端:varurl="index.jsp?test=来自前台我不是乱码";url=encodeURI(url);url=encodeURI(url);//两次编码XMLHTTP.open("post",url,true);后端:Stringname=arg0.getParameter......
  • 从ajax到跨域引发的相关面试题总结
    转载请注明出处:1.ajax异步和同步的区别Ajax是一种基于JavaScript语言和XMLHttpRequest对象的异步数据传输技术,通过它可以使不用刷新整个页面的情况下,对页面进行部分更新。同步和异步是指客户端发送请求时,主线程是否会阻塞等待服务器的响应返回。同步请求在发送请......
  • jquery ajax contentType为application/json及设置请求头header
    1.找了好久发现contentType一般为默认的application/x-www-form-urlencoded,这次post请求后台限定了为application/json2.当设置contentType为application/json还是出错时,把data也要转换一下$.ajax({method:"POST",url:"",contentType:'application/json',......
  • 第六篇 手写原理代码 - 对象 【 实现 AJAX 请求 】
    AJAX是AsynchronousJavaScriptandXML的缩写,指的是通过JavaScript和XML技术在不重新加载整个页面的情况下,实现与服务器之间异步通信的技术。使用AJAX技术能够使网页更加动态和用户友好。JavaScript的AJAX技术借助于浏览器内置的XMLHttpRequest对象实现。XMLHttp......
  • js:浏览器跨域ajax变通实现 -- flash + js + crossdomain.xml
    使用此方式能很好解决这个问题,因为考虑了php中转形式的双倍时间和莫须有的访问,不是很愿意用,除非不得已,现在找到flash的实现方法,对于能自按的服务器来说这是不错的解决方案,只需要担心的是有人不愿意安装flash控件,且能解决script方式的不能post不足,除非浏览器已经统一支持跨......
  • Web开发|AJAX学习
    IE|FireFox|Chrome,AJAX引擎运行方式的对比AJAX引擎的核心是XMLHttpRequest对象。而不同的浏览器创建XMLHttpRequest对象的方法是有差异的。IE浏览器使用ActiveXObject,而其他的浏览器使用名为XMLHttpRequest的JavaScript内建对象。XMLHttpRequest得到了所有现代浏览器较好的......
  • 第二十篇 Ajax 与 Comet
    bycaixin深圳Ajax是一种从页面向服务器请求数据的技术,Comet是一种服务器向页面推送数据的技术,能够让信息近乎实时的被推送到页面上。实现Comet方式:长轮询,流主流的Web端即时通讯方案大致有4种:传统Ajax短轮询、Comet技术、WebSocket技术、SSE(Server-sentEvents)AjaxAj......
  • jQuery实现Ajax通讯的几种常用方式
    这里介绍3种jQuery.get(url,[data],[success(data,textStatus,jqXHR)],[dataType])jQuery.post(url,[data],[success(data,textStatus,jqXHR)],[dataType])jQuery.ajax(url,[settings])第三种是我最常用的,看个人习惯了,其实都OK第一种不支持中文,要用......