什么是Ajax?Ajax 的原理以及优缺点?

809 阅读3分钟

什么是 Ajax

Ajax 是“Asynchronous JavaScript and XML”的缩写。他是指一种创建交互式网页应用的网页开发技术。沟通客户端和服务器,可以在不必刷新整个浏览器的情况下,与服务器进行异步通讯的技术。

Ajax的原理

通过 XMLHTTPRequest 对象来向服务器发异步请求,从服务器获得数据,然后用 JavaScript 来操作 DOM 而更新页面。这其中最关键的一步就是从服务器获得请求数据。

XMLHTTPRequestAjax核心机制,它是在 IE5 中首先引入的,是一种支持异步请求的技术,简单来说,也就是 JavaScript 可以及时向服务器提出请求和处理响应,而不阻塞用户。达到无刷新的效果

Ajax的优点和缺点

优点

  1. 最大的一点是页面无刷新,用户体验非常好
  2. 使用异步方式与服务器通信,具有更加迅速的响应能力
  3. 可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和宽带的负担,节约空间和宽带租用成本,并且减轻服务器的负担, Ajajx 的原则是“按需取数据”,可以最大程度减少冗余请求,和响应对服务器造成的负担
  4. 基于标准化的并被广泛支持的技术,不需要下载插件或者小程序

缺点

  1. Ajax 不支持浏览器 back 按钮
  2. 安全问题,Ajax 暴露了与服务器交互的细节
  3. 多搜索引擎的支持比较弱
  4. 破坏了程序的异常机制

XMLHTTPRequest对象的常用方法和属性(补充)

方法

  • open(String mehod,String url,boolean async,String username,String password)

    • 该方法创建 HTTP 请求
    • 第一个参数是指定提交方式(get、post等)
    • 第二个参数是指定要提交的地址是哪
    • 第三个参数是指定是异步还是同步(true 表示异步,false 表示同步)
    • 第四个和第五个参数在 HTTP 认证的时候会用到。是可选的
  • send(content)

    • 发送请求给服务器
    • 如果是 get 方式并不需要填写参数,或填写 null
    • 如果是 post 方式,把要提交的参数写上去
  • setResquestHeader(String header,String value)

    • 设置消息头(使用 post 方式才会使用到,get 方法并不需要调用该方法)
  • getAllRequestHeaders()

  • getResponseHeader(String header)

  • abort()

常用属性

onreadystatechange:请求状态改变的事件触发器(readyState变化时会调用此方法),一般用于指定回调函数

readyState:请求状态 readyState 一改变,回调函数被调用,它有5个状态:

  • 0 :未初始化
  • 1 :open方法成功调用后
  • 2 :服务器已经答应客户端的请求
  • 3 :交互中, HTTP 头部信息已经接收,响应数据尚未接收
  • 4 :完成。数据接收完成
  • responseText:服务器返回的文本内容
  • responseXML: 服务器返回的兼容 DOM 的 XML 内容
  • statusText:服务器返回状态码的文本信息

回调函数是什么?

回调函数就是接收服务器返回的内容