视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
新手如何通过Vue.js+Node.js打造个人博客 浏览器的多线程机制详解 浏览器访问路径不提示下载而显示新页面应该如何解决 浏览器html代码快速预览小工具 浏览器文件分段断点上传 新手学习vue详解 浏览器不兼容我写的代码怎么办 浏览器变动时进行自适应代码分享 浏览器调试动态js脚本的方法图解教程 浏览器记住密码后input黄色背景处理方法 华硕笔记本怎么开启uefi引导 美的冰箱冷藏室为什么会结冰 怎么看拼多多卖家直播 格力空调故障代码e8什么原因 word文档中怎么在图片上添加图片 惠普m1005打印机怎么扫描身份证正反面 刀纸和卫生纸有啥区别 冰箱低压漏氟维修方法 canon打印机扫描身份证正反面 哔哩漫画福利券怎么用 新手必看的Ajax技术组成与核心原理分析 新手入门如何学习vue 新手必看的js实现异步方法 浏览器互相跳转并传递参数(附代码) 浏览器与NodeJS的EventLoop异同以及部分机制 浏览器事件循环的深入了解(代码示例) 浏览器缓存机制的深入解析(图文) 浏览器的进程与线程的介绍 浏览器输入url到发起http请求的具体过程介绍 浏览器与Node的事件循环(EventLoop)之间的区别总结 浏览器解析渲染HTML文档的过程详解(图文) 浏览器缓存策略的详细介绍(图文) 脚本是什么 alert是什么意思 新手学习PHP的一些基础知识分享 新手配置 PHP 调试环境(IIS+PHP+MYSQL) 浏览器兼容解决FF/IE6/IE7背景专用CSSHACK_经验交流 史上最强大的40多个纯CSS绘制的图形 浏览器Firefox与IE在CSS样式表中的差异 浏览器默认样式及css初始化
新手必学的Ajax总结
2020-11-27 19:56:55 责编:小采
文档
这次给大家带来新手必学的Ajax总结,新手必学Ajax总结有哪些,下面就是实战案例,一起来看一下。

一、Ajax简介、优劣势、应用场景以及技术

Ajax简介 :

Asynchronous Javascript And XML (异步的JavaScript和XML)

它并不是一种单一的技术,而是有机利用一系列交互式网页应用相关的技术所形成的结合体

AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

优点:

  1. 页面无刷新,用户体验好。

  2. 异步通信,更加快的响应能力。

  3. 减少冗余请求,减轻了服务器负担

  4. 基于标准化的并被广泛支持的技术,不需要下载插件或者小程序

缺点:

  1. ajax干掉了back按钮,即对浏览器后退机制的破坏。

  2. 存在一定的安全问题。

  3. 对搜索引擎的支持比较弱。

  4. 破坏了程序的异常机制。

  5. 无法用URL直接访问

ajax应用场景

  • 场景 1. 数据验证

  • 场景 2. 按需取数据

  • 场景 3. 自动更新页面

  • AJAX 包含以下五个部分:

    ajax并非一种新的技术,而是几种原有技术的结合体。它由下列技术组合而成。

    1. 使用CSS和XHTML来表示。

    2. 使用DOM模型来交互和动态显示。

    3. 数据互换和操作技术,使用XML与XSLT

    4. 使用XMLHttpRequest来和服务器进行异步通信。

    5. 使用javascript来绑定和调用。

    在上面几中技术中,除了XmlHttpRequest对象以外,其它所有的技术都是基于web标准并且已经得到了广泛使用的,XMLHttpRequest虽然目前还没有被W3C所采纳,但是它已经是一个事实的标准,因为目前几乎所有的主流浏览器都支持它

    第一张图尤其说明了传统Web 应用程序的结构与采用了 AJAX 技术的 Web应用程序的结构上的差别

    主要的差别,其实不是 JavaScript,不是 HTML/XHTML和 CSS,而是采用了 XMLHttpRequest 来向服务器异步的请求 XML 数据

    再来看第二张图,传统的 Web 应用模式,用户的体验是割裂的,点击->等待->看到新的页面->再点击->再等待。而采用了AJAX技术之后,大部分的计算工作,都是在用户不察觉的情况下,交由服务器去完成了

    二、创建ajax的步骤

    Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。原生创建ajax可分为以下四步

    1、创建XMLHttpRequest对象

    Ajax的核心是XMLHttpRequest对象,它是Ajax实现的关键,发送异步请求、接受响应以及执行回调都是通过它来完成

    所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象。

    创建 XMLHttpRequest对象的语法:

    var xhr = new XMLHttpRequest();

    老版本的 Internet Explorer(IE5 和 IE6)使用ActiveX 对象:

    var xhr = new ActiveXObject("Microsoft.XMLHTTP");

    为了应对所有的现代浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest对象。如果支持,则创建XMLHttpRequest对象。如果不支持,则创建ActiveXObject:

    兼容各个浏览器的创建Ajax的工具函数

    function createRequest (){
     try {
     xhr = new XMLHttpRequest();
     }catch (tryMS){
     try {
     xhr = new ActiveXObject("Msxm12.XMLHTTP");
     } catch (otherMS) {
     try {
     xhr = new ActiveXObject("Microsoft.XMLHTTP");
     }catch (failed) {
     xhr = null;
     }
     }
     }
     return xhr;
    }

    2、准备请求

    初始化该XMLHttpRequest对象,接受三个参数:

    xhr.open(method,url,async);

    第一个参数表示请求类型的字符串,其值可以是GET或者POST。

    GET请求:

    xhr.open("GET",demo.php?name=tsrot&age=24,true);

    POST请求:

    xhr.open("POST",demo.php,true);

    第二个参数是要作为请求发送目标的URL。

    第三个参数是true或false,表示请求是以异步还是同步的模式发出。(默认为true,一般不建议为false)

  • false:同步模式发出的请求会暂停所有javascript代码的执行,知道服务器获得响应为止,如果浏览器在连接网络时或者在下载文件时出了故障,页面就会一直挂起。

  • true:异步模式发出的请求,请求对象收发数据的同时,浏览器可以继续加载页面,执行其他javascript代码

  • 3、发送请求

    xhr.send();

    一般情况下,使用Ajax提交的参数多是些简单的字符串,可以直接使用GET方法将要提交的参数写到open方法的url参数中,此时send方法的参数为null或为空。

    GET请求:

    xhr.open("GET",demo.php?name=tsrot&age=24,true);
    xhr.send(null);

    POST请求:

    如果需要像 HTML 表单那样 POST 数据,请使用 setRequestHeader()来添加 HTTP 头。然后在send()方法中规定您希望发送的数据:

    xhr.open("POST",demo.php,true);
    xhr.setRequestHeder("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
    xhr.sen

    4、处理响应

    xhr.onreadystatechange = function(){
     if(xhr.readyState == 4 && xhr.status == 200){
     console.log(xhr.responseText);
     }
    }

    onreadystatechange :当处理过程发生变化的时候执行下面的函数

    readyState :ajax处理过程

    0:请求未初始化(还没有调用 open() )。

    1:请求已经建立,但是还没有发送(还没有调用 send() )。

    2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)。

    3:请求在处理中;通常响应中已有部分数据可用了,但是服务器还没有完成响应的生成。

    4:响应已完成;您可以获取并使用服务器的响应了。

    status属性:

  • 200:”OK”

  • 404: 未找到页面

  • responseText:获得字符串形式的响应数据

    responseXML:获得 XML形式的响应数据

    对象转换为JSON格式使用JSON.stringify

    json转换为对象格式用JSON.parse()

    返回值一般为json字符串,可以用JSON.parse(xhr.responseText)转化为JSON对象

    从服务器传回的数据是json格式,这里做一个例子说明,如何利用

    1、首先需要从XMLHttpRequest对象取回数据这是一个JSON串,把它转换为真正的JavaScript对象。使用JSON.parse(xhr.responseText)转化为JSON对象

    2、遍历得到的数组,向DOM中添加新元素

    function example(responseText){
    var salep= document.getElementById("sales");
    var sales = JSON.parse(responseText);
     for(var i=0;i<sales.length;i++){
     var sale = sales[i];
     var p = document.createElement("p");
     p.setAttribute("class","salseItem");
     p.innerHTML = sale.name + sale.sales;
     salsep.appendChild(p);
     }
    }

    5、完整例子

    var xhr = false;
     if(XMLHttpRequest){
     xhr = new XMLHttpRequest();
     }else{
     xhr = new ActiveXObject("Microsoft.XMLHTTP");
    };
    if(xhr) {//如果xhr创建失败,还是原来的false
     xhr.open("GET","./data.json",true);
     xhr.send();
     xhr.onreadystatechange = function(){
     if(xhr.readyState == 4 && xhr.status == 200){
     console.log(JSON.parse(xhr.responseText).name);
     }
     }
    }

    data.json

    {
     "name":"tsrot",
     "age":24
    }

    这个过程是一定要记在脑子里的

    function ajax(url, success, fail){
     // 1. 创建连接
     var xhr = null;
     xhr = new XMLHttpRequest()
     // 2. 连接服务器
     xhr.open('get', url, true)
     // 3. 发送请求
     xhr.send(null);
     // 4. 接受请求
     xhr.onreadystatechange = function(){
     if(xhr.readyState == 4){
     if(xhr.status == 200){
     success(xhr.responseText);
     } else { // fail
     fail && fail(xhr.status);
     }
     }
     }
    }

    XMLHttpRequest 在异步请求远程数据时的工作流程

    谈谈JSONP

    要访问web服务器的数据除了XMLHttpRequest外还有一种方法是JSONP

    如果HTML和JavaScript与数据同时在同一个机器上,就可以使用XMLHttpRequest

    什么是JSONP?

    JSONP(JSON with Padding)是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)

    JSONP有什么用?

    由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源,为了实现跨域请求,可以通过script标签实现跨域请求,然后在服务端输出JSON数据并执行回调函数,从而解决了跨域的数据请求

    如何使用JSONP?

    在客户端声明回调函数之后,客户端通过script标签向服务器跨域请求数据,然后服务端返回相应的数据并动态执行回调函数
    用XMLHttpRequest时,我们得到一个字符串;要用JSON.parse把字符串转化成对象,使用jsonp时,script标志会解析并执行返回的代码,等我们处理数据时,已经是一个JavaScript对象了

    简单实例

    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
    <script type="text/javascript"> 
     function jsonpCallback(result) { 
     alert(result.a); 
     alert(result.b); 
     alert(result.c); 
     for(var i in result) { 
     alert(i+":"+result[i]);//循环
    输出a:1,b:2,etc. } } </script> <script type="text/javascript" src="http://crossdomain.com/services.php?callback=jsonpCallback"></script> <!--callback参数指示生成JavaScript代码时要使用的函数jsonpcallback-->

    注意浏览器的缓存问题

  • 在末尾增加一个随机数可避免频繁请求同一个链接出现的缓存问题

  • `

  • 三、 jQuery中的Ajax

    jQuery中的ajax封装案例

    //ajax请求后台数据
    var btn = document.getElementsByTagName("input")[0];
    btn.onclick = function(){
     
     ajax({//json格式
     type:"post",
     url:"post.php",
     data:"username=poetries&pwd=123456",
     asyn:true,
     success:function(data){
     document.write(data);
     }
     });
    }
    //封装ajax
    function ajax(aJson){
     var ajx = null;
     var type = aJson.type || "get";
     var asyn = aJson.asyn || true;
     var url = aJson.url; // url 接收 传输位置
     var success = aJson.success;// success 接收 传输完成后的回调函数
     var data = aJson.data || '';// data 接收需要附带传输的数据
     
     if(window.XMLHttpRequest){//兼容处理
     ajx = new XMLHttpRequest();//一般浏览器
     }else
     {
     ajx = new ActiveXObject("Microsoft.XMLHTTP");//IE6+
     }
     if (type == "get" && data)
     {
     url +="/?"+data+"&"+Math.random();
     }
     
     //初始化ajax请求
     ajx.open( type , url , asyn );
     //规定传输数据的格式
     ajx.setRequestHeader('content-type','application/x-www-form-urlencoded');
     //发送ajax请求(包括post数据的传输)
     type == "get" ?ajx.send():ajx.send(aJson.data);
     
     //处理请求
     ajx.onreadystatechange = function(aJson){
     
     if(ajx.readState == 4){
     
     if (ajx.status == 200 && ajx.status<300)//200是HTTP 请求成功的状态码
     {
     //请求成功处理数据
     success && success(ajx.responseText);
     }else{
     alert("请求出错"+ajx.status);
     
     }
     }
     
     }

    jQuery中的Ajax的一些方法

    jquery对Ajax操作进行了封装,在jquery中的$.ajax()方法属于最底层的方法,第2层是load()$.get()$.post();第3层是$.getScript()$.getJSON() ,第2层使用频率很高

    load()方法

    load()方法是jquery中最简单和常用的ajax方法,能载入远程HTML代码并插入DOM中 结构为:load(url,[data],[callback])

    使用url参数指定选择符可以加载页面内的某些元素 load方法中url语法:url selector 注意:url和选择器之间有一个空格

    传递方式

    load()方法的传递方式根据参数data来自动指定,如果没有参数传递,则采用GET方式传递,反之,采用POST

    回调参数

    必须在加载完成后才执行的操作,该函数有三个参数 分别代表请求返回的内容、请求状态、XMLHttpRequest对象
    只要请求完成,回调函数就会被触发

    $("#testTest").load("test.html",function(responseText,textStatus,XMLHttpRequest){
     //respnoseText 请求返回的内容
     //textStatus 请求状态 :sucess、error、notmodified、timeout
     //XMLHttpRequest 
    })

    load方法参数

    参数名称类型说明
    urlString请求HTML页面的URL地址
    data(可选)Object发送至服务器的key / value数据
    callback(可选)Function请求完成时的回调函数,无论是请求成功还是失败

    $.get()和$.post()方法

    load()方法通常用来从web服务器上获取静态的数据文件。在项目中需要传递一些参数给服务器中的页面,那么可以使用$.get()$.post()$.ajax()方法

    注意:$.get()$.post()方法是jquery中的全局函数

    $.get()方法

    $.get()方法使用GET方式来进行异步请求

    结构为:$.get(url,[data],callback,type)

    如果服务器返回的内容格式是xml文档,需要在服务器端设置Content-Type类型 代码如下: header("Content-Type:text/xml:charset=utf-8") //php

    $.get()方法参数解析

    参数类型说明
    urlString请求HTML页的地址
    data(可选)Object发送至服务器的key/ value 数据会作为QueryString附加到请求URL中
    callback(可选)Function载入成功的回调函数(只有当Response的返回状态是success才调用该方法)
    type(可选)String服务器返回内容的格式,包括xml、html、script、json、text和_default

    $.post()方法

    它与$.get()方法的结构和使用方式相同,有如下区别

  • GET请求会将参数跟张乃URL后进行传递,而POST请求则是作为Http消息的实体内容发送给web服务器,在ajax请求中,这种区别对用户不可见

  • GET方式对传输数据有大小限制(通常不能大于2KB),而使用POST方式传递的数据量要比GET方式大得多(理论不受限制)

  • GET方式请求的数据会被浏览器缓存起来,因此其他人可以从浏览器的历史纪录中读取这些数据,如:账号、密码。在某种情况下,GET方式会带来严重的安全问题,而POST相对来说可以避免这些问题

  • GET和POST方式传递的数据在服务端的获取也不相同。在PHP中,GET方式用$_GET[]获取;POST方式用$_POST[]获取;两种方式都可用$_REQUEST[]来获取

  • 总结

    使用load()$.get()$.post()方法完成了一些常规的Ajax程序,如果还需要复杂的Ajax程序,就需要用到$.ajax()方式

    $.ajax()方法

    $.ajax()方法是jquery最底层的Ajax实现,它的结构为$.ajax(options)

    该方法只有一个参数,但在这个对象里包含了$.ajax()方式所需要的请求设置以及回调函等信息,参数以key / value存在,所有参数都是可选的

    $.ajax()方式常用参数解析

    参数类型说明
    urlString(默认为当前页地址)发送请求的地址
    typeString请求方式(POST或GET)默认为GET
    timeoutNumber设置请求超时时间(毫秒)
    dataTypeString预期服务器返回的类型。可用的类型如下
    xml:返回XML文档,可用jquery处理
    html:返回纯文本的HTML信息,包含的script标签也会在插入DOM时执行
    script:返回纯文本的javascript代码。不会自动缓存结果,除非设置cache参数。注意:在远程请求时,所有的POST请求都将转为GET请求
    json:返回JSON数据
    jsonp:JSONP格式,使用jsonp形式调用函数时,例如:myurl?call back=?,jquery将自动替换后一个?为正确的函数名,以执行回调函数
    text:返回纯文本字符串
    beforeSendFunction发送请求前可以修改XMLHttpRequest对象的函数,例如添加自定义HTTP头。在beforeSend中如果返回false可以取消本次Ajax请求。XMLHttpRequest对象是唯一的参数
    function(XMLHttpRequest){
    this;//调用本次Ajax请求时传递的options参数
    }
    completeFunction请求完成后的回调函数(请求成功或失败时都调用)
    参数:XMLHttpRequest对象和一个描述成功请求类型的字符串
    function(XMLHttpRequest,textStatus){
    this;//调用本次Ajax请求时传递的options参数
    }
    successFunction请求成功后调用的回调函数,有两个参数
    (1)由服务器返回,并根据dataTyppe参数进行处理后的数据
    (2)描述状态的字符串
    function(data,textStatus){
    //data可能是xmlDoc、``jsonObj、html、text等
    this;//调用本次Ajax请求时传递的options参数
    }
    errorFunction请求失败时被调用的函数
    globalBoolean默认为true。表示是否触发全局Ajax事件,设置为false将不会触发。AjaxStart或AjaxStop可用于控制各种Ajax事件

    相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

    推荐阅读:

    ajax怎样实现bootstrap模态框分页查询功能

    用Ajax实现注册与头像上传功能

    下载本文
    显示全文
    专题苹果笔记本截屏的快捷键是什么苹果笔记本截屏的快捷键是什么专题iphone照片永久删除怎么恢复iphone照片永久删除怎么恢复专题废手机怎样提炼黄金废手机怎样提炼黄金专题手机卡没信号怎么回事手机卡没信号怎么回事专题电脑启动不了反复启动电脑启动不了反复启动专题iphone视频怎么转音频iphone视频怎么转音频专题qq个人文件夹中的文件被占用暂时无法登录qq个人文件夹中的文件被占用暂时无法登录专题word表格每页固定表头word表格每页固定表头专题注册微信怎么跳过辅助注册微信怎么跳过辅助专题微信收藏占用手机存储空间吗微信收藏占用手机存储空间吗专题无手机号怎么注册qq无手机号怎么注册qq专题橡胶刺鼻气味如何去除橡胶刺鼻气味如何去除专题家里的蟑螂是怎么来的家里的蟑螂是怎么来的专题怎么赶走黄鼠狼妙招怎么赶走黄鼠狼妙招专题蟑螂怎么来的蟑螂怎么来的专题相互宝怎么取消相互宝怎么取消专题相互保怎么退出相互保怎么退出专题雪是怎么形成的雪是怎么形成的专题蟑螂是怎么进入家里的蟑螂是怎么进入家里的专题洁厕灵蓝泡泡怎么用洁厕灵蓝泡泡怎么用专题如何判断面粉变质如何判断面粉变质专题房间里有老鼠用什么方法可以解决房间里有老鼠用什么方法可以解决专题家庭野生菌冷冻保存技巧家庭野生菌冷冻保存技巧专题竹荪煮多长时间熟竹荪煮多长时间熟专题老鼠胶怎么洗掉老鼠胶怎么洗掉专题怎么杀蟑螂怎么杀蟑螂专题航班号怎么看航班号怎么看专题花雕酒怎么喝花雕酒怎么喝专题板栗壳怎么好剥板栗壳怎么好剥专题烤红薯没有锡纸怎么办烤红薯没有锡纸怎么办专题jsp心得体会专题vue基础知识总结专题js基础知识总结专题ajax ppt专题前端js知识点总结专题js知识点总结专题ajax的工作流程专题jquery学习心得专题js学习案例专题js学习内容专题ajax案例专题ajax的5步骤专题ajax操作专题ajax的语法专题js学什么内容专题ajax优点和缺点专题js 学习步骤专题ajax网络教程专题web前端课程收获和心得专题免费ajax教程专题