一:介绍

  今天跟下大家简单的介绍一下,在前端开发中,前后端数据交互的一种手段,我们都知道,在前端往后端传送数据的话,利用get,post方法即可向后端发送数据,后端将数据接受,链接到数据库,进行数据库操作,再将数据库的数据返回到前端,那么这时候前端如何去接受后端传过来的数据呢?这个就是今天跟大家分享的重点,前端接受数据的方式-ajax.

  那么ajax到底是什么呢?是一门编程语言吗?不,其实ajax它是一种技术的集合,通过多方面的技术总结出来的一种手段,作为前后端数据交互的重要手段。

  ajax 全称为:“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML),它并不是 JavaScript 的一种单一技术,而是利用了一系列交互式网页应用相关的技术所形成的结合体。使用Ajax,我们可以无刷新状态更新页面,并且实现异步提交,提升了用户体验。

二:技术结合  

  ajax 这个概念是由 JesseJamesGarrett 在 2005 年发明的。它本身不是单一技术,是一串技术的集合,主要有:

  1.JavaScript,通过用户或其他与浏览器相关事件捕获交互行为

  2.XMLHttpRequest 对象,通过这个对象可以在不中断其它浏览器任务的情况下向服务器发送请求;

  3.服务器上的文件,以 XML、HTML 或 JSON 格式保存文本数据;

  4.其它 JavaScript,解释来自服务器的数据(比如 PHP 从 MySQL 获取的数据)并将其呈现到页面上.

三:工作流程  

  上面已经提到了ajax所用的一连串的技术,那么下面一步步说一下,这些技术的意义以及用法(ajax的工作流程)

  1:创造介质(对象)

  1. var x = new XMLHttpRequest();

  2:发送的方法

  1. x.open("get","url",true);
  2. 三个参数:发送方法,地址,布尔值(默认为true,异步)
  3. 第一个参数:POST||GET
  4. POSTGET的区别:
  5. .POST主要用来发送数据,GET主要用来接受数据;
  6. .PSOT发送数据的安全性较好,而GET较差;
  7. .POST发送数据不限制大小,而GET大小受限2~100k
  8. 什么时候用GETPOST:在数据获取时用GET方式,在操作数据时应使用POST方式。
  9.  
  10. 第二个参数:要请求的url
  11.  
  12. 第三个参数:接受一个布尔值,决定请求的方式
  13. true时,服务器请求是异步进行的,也就是脚本执行send() 方法后不等待服务器的执行结果,而是继续执行脚本代码;
  14. false时,服务器请求是同步进行的,也就是脚本执行send() 方法后等待服务器的执行结果的返回,若在等待过程中超时,则不再等待,继续执行后面的脚本代码!

  3:监听ajax和http的状态

  1. x.onreadystatechange = function(){
  2. if(x.readyState == 4 && x.status == 200){
        //ajax的状态为4并且http的状态为200即表示数据正常
      }
  3. }

  4:发送信息

  1. x.send();

四:ajax的状态码和http的状态码表

   1:ajax.readyState:
  1. -(未初始化)还没有调用send()方法
  2. -(载入)已调用send()方法,正在发送请求
  3. -(载入完成)send()方法执行完成,已经接收到全部响应内容
  4. -(交互)正在解析响应内容
  5. -(完成)响应内容解析完成,可以在客户端调用了
  2:HTTP状态码ajax.status:监听服务器的状态
  1. **:请求收到,继续处理
  2. **:操作成功收到,分析、接受
  3. **:完成此请求必须进一步处理
  4. **:请求包含一个错误语法或不能完成
  5. **:服务器执行一个完全有效请求失败
  6.  
  7. ——客户必须继续发出请求
  8. ——客户要求服务器根据请求转换HTTP协议版本
  9.  
  10. ——交易成功
  11. ——提示知道新文件的URL
  12. ——接受和处理、但处理未完成
  13. ——返回信息不确定或不完整
  14. ——请求收到,但返回信息为空
  15. ——服务器完成了请求,用户代理必须复位当前已经浏览过的文件
  16. ——服务器已经完成了部分用户的GET请求
  17.  
  18. ——请求的资源可在多处得到
  19. ——删除请求数据
  20. ——在其他地址发现了请求数据
  21. ——建议客户访问其他URL或访问方式
  22. ——客户端已经执行了GET,但文件未变化
  23. ——请求的资源必须从服务器指定的地址得到
  24. ——前一版本HTTP中使用的代码,现行版本中不再使用
  25. ——申明请求的资源临时性删除
  26.  
  27. ——错误请求,如语法错误
  28. ——请求授权失败
  29. ——保留有效ChargeTo头响应
  30. ——请求不允许
  31. ——没有发现文件、查询或URl
  32. ——用户在Request-Line字段定义的方法不允许
  33. ——根据用户发送的Accept拖,请求资源不可访问
  34. ——类似401,用户必须首先在代理服务器上得到授权
  35. ——客户端没有在用户指定的饿时间内完成请求
  36. ——对当前资源状态,请求不能完成
  37. ——服务器上不再有此资源且无进一步的参考地址
  38. ——服务器拒绝用户定义的Content-Length属性请求
  39. ——一个或多个请求头字段在当前请求中错误
  40. ——请求的资源大于服务器允许的大小
  41. ——请求的资源URL长于服务器允许的长度
  42. ——请求资源不支持请求项目格式
  43. ——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段
  44. ——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求
  45.  
  46. ——服务器产生内部错误
  47. ——服务器不支持请求的函数
  48. ——服务器暂时不可用,有时是为了防止发生系统过载
  49. ——服务器过载或暂停维修
  50. ——关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长
  51. ——服务器不支持或拒绝支请求头中指定的HTTP版本

五:解决get方法一个bug

  我们都知道,每次浏览器请求相同地址,会优先查找缓存,通过缓存打开的页面速度也快,但是如果当服务器种的数据进行更新了,页面请求任然走的是缓存的话,就会导致页面获取不到最新的数据,这个是很严重的问题,那么如何解决这个bug呢?如果说每次访问的都是都不一样,但是拿到的数据都是一样的,那么这个问题也就迎刃而解了,一个随时都在变化的且不需要去操控的东西,相信大家都能想到一个东西叫做时间戳,没错,我们可以将时间戳拼接在url的后面,这样就能保证我们每次拿到的都是不同的地址,以此来欺骗浏览器。

六:ajax的优缺点:

1:优点

  无刷新加载技术,不需要刷新页面就能拿到最新的数据

  初始加载页面,提升速度
  节省性能,提高用户体验

2:缺点:

  ajax破坏了浏览器的前进后退功能
  破坏了SEO
  ajax的兼容:IE5之前不兼容

js-数据交互--AJAX的更多相关文章

  1. 数据交互 ajax代码整理

    请求列表通用 /** **加载对应的试卷套题 ** */ function loadQuestions(){ var businessSubClass = { pageNo:pageNo, pageS ...

  2. echarts同一页面四个图表切换的js数据交互

    需求:点击tab页,切换四个不同的图表,ajax向后台请求数据,展示在四个不同的图表中. 其余的就不多说,直接上js代码了 $(function() { $("#heart").o ...

  3. 前后数据交互(ajax) -- 初始化页面表格

    // 初始化员工信息列表 function loadpage ( pageNum ) { var keywords = $("#keywords").val(); $(" ...

  4. js数据交互——fetch

    什么是fetch? Fetch被称为下一代Ajax技术,采用Promise方式来处理数据. 是一种简洁明了的API,比XMLHttpRequest更加简单易用.fetch是原生的(无需引入任何库和框架 ...

  5. 数据交互 ajax 初始化省

    1 //初始化省 2 function initProvince() { 3 if( areaLvel == 0 ) { 4 return; 5 } 6 // 清空option 7 $("# ...

  6. JS数据交互:动态从数据库中获取数据填充Select

    JavaScript代码: $(document).ready(function () { getIntype(); });function getIntype(){ $.ajax({ type:&q ...

  7. 前端与后端数据交互的方式之ajax

    前端与后端数据交互的方式之Ajax 对于前端学习而言,CSS+HTML+JavaScript的学习在自我学习的情况下掌握也不是很难,但是想要实现前后端的数据交互在没有指导的情况下学习会是一头雾水.接下 ...

  8. 无废话ExtJs 入门教程二十[数据交互:AJAX]

    无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...

  9. 弹出层和ajax数据交互

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs& ...

  10. 玩转Web之Json(二)----jquery easy ui + Ajax +Json+SQL实现前后台数据交互

    最近在学Json,在网上也找过一些资料,觉得有点乱,在这里,我以easy ui的登录界面为例来说一下怎样用Json实现前后台的数据交互 使用Json,首先需要导入一些jar包,这些资源可以在网上下载到 ...

随机推荐

  1. 纯数据结构Java实现(0/11)(开篇)

    为嘛要写 本来按照我的风格,其实很不喜欢去写这些细节的东西,因为笔记上直接带过了. 本来按照我的风格,如果要写,那也是直接上来就干,根本不解释这些大纲,参考依据. 本来按照我的风格,不想太显山露水,但 ...

  2. Linux的crond和crontab

    一.crond cron是一个linux下的定时执行工具(相当于windows下的scheduled task),可以在无需人工干预的情况下定时地运行任务task. 由于cron 是Linux的ser ...

  3. 建立apk定时自动打包系统第二篇——自动上传文件

    在<建立apk定时自动打包系统第一篇——Ant多渠道打包并指定打包目录和打包日期>这篇文章中介绍多渠道打包的流程.很多时候我们需要将打包好的apk上传到ftp中,这时候我可以修改custo ...

  4. LoRaWAN_stack移植笔记(三)__SPI

    stm32相关的配置 由于例程使用的主控芯片为STM32L151C8T6,而在本设计中使用的主控芯片为STM32L051C8T6,内核不一样,并且Cube库相关的函数接口及配置也会有不同,所以芯片的驱 ...

  5. Leetcode之深度优先搜索&回溯专题-638. 大礼包(Shopping Offers)

    Leetcode之深度优先搜索&回溯专题-638. 大礼包(Shopping Offers) 深度优先搜索的解题详细介绍,点击 在LeetCode商店中, 有许多在售的物品. 然而,也有一些大 ...

  6. ThreadLocal可以解决并发问题吗?

    前言 到底什么是线程的不安全?为什么会存在线程的不安全?线程的不安全其实就是多个线程并发的去操作同一共享变量没用做同步所产生意料之外的结果.那是如何体现出来的呢?我们看下面的一个非常经典的例子:两个操 ...

  7. Oralce 触发器

    今天做了一个需要用到触发器实现的功能中间去到了各种问题,还好最后都解决了: 整个过程中真是遇到了不少错误: ORA-04091: 表 KPGO.T_ISSUER 发生了变化, 触发器/函数不能读它 O ...

  8. Windows 7 sometimes breaks FTP connections on Java 7 if firewall is enabled.

    Solution: 用管理员身份,在cmd命令行输入: netsh advfirewall set global StatefulFTP disable 会关闭防火墙,从而解决问题.

  9. CodeForces 474F Ant colony ST+二分

    Ant colony 题解: 因为一个数是合法数,那么询问区间内的其他数都要是这个数的倍数,也就是这个区间内的gcd刚好是这个数. 对于这个区间的gcd来说,不能通过前后缀来算. 所以通过ST表来询问 ...

  10. 牛客多校第七场 C Bit Compression 思维

    链接:https://www.nowcoder.com/acm/contest/145/C来源:牛客网 A binary string s of length N = 2n is given. You ...