ajax基础

关于Ajax

一、什么是ajax?

简单来说,ajax相当于浏览器发送请求与接收响应的代理人,以实现在不影响用户浏览页面的情况下,局部刷新页面数据,从而提高用户体验。
ajax基础_第1张图片

二、ajax的实现步骤

1.创建ajax对象

  • 创建XHR对象:
var xhr = new XMLHTTpRequest()
  • 如果检测原生XHR对象不存在,且检测另一个对象ActiveX对象也不存在,就抛出一个错误。然后就要使用下面的代码在浏览器中创建XHR对象。

    var xhr = createXHR();
    

2.告诉ajax请求以及请求的方式

open()方法

接收三个参数:

(1)要发送的请求的类型(“get”,“post”等)

(2)请求的URL(服务器上文件的地址)

(3)表示是否发送异步请求的布尔值。

例:

xhr.open("get","example.php",false);

3.发送请求

send()方法

接收一个参数:即要作为主体发送的数据。如果不需要通过请求主体发送数据,则必须传入null。调用send()后,请求就会被分派到服务器。例:

xhr.open("get","example.php",false);
xhr.send(null);

4.获取服务器端给与用户端的响应数据

  • 为XHR对象添加onreadystatechange响应函数

  • 判断响应是否完成:XHR对象的readyState属性值为4的时候

  • 判断响应是否可用:XHR对象的status属性值为200

  • 获得服务器响应(responseText和responseText属性)

    即:

    var xhr = createXHR();
    xhr.onreadystatechange = function(){
        if(xhr.readyState==4){
          if(xhr.status>=200&&xhr.status<300)||xhr.status==304{
                alert(xhr.responseText);
            }
            else{
                alert("Request was unsucceful:"+xhr.status);
            }
        }
    }
    

三、请求的方法

GET请求

​ 最常用于向服务器查询某些信息。必要时,可以将查询的字符串参数追加到URL的末尾,以便将信息发送给服务器。

POST请求

​ 通常用于向服务器发送应该被保存的数据。post请求的主体可以包含非常多的数据,而且格式不限。

GET和POST请求的区别

get比post更简单更快,可用于大多数情况下。

不过,在以下情况尽量始终使用POST:

  • 缓存文件不是选项(更新在服务器上的文件或数据库)
  • 向服务器发送大量数据(post无大小限制)
  • 发送用户输入(可包含未知字符),post比get更强大更安全

四、setRequestHeader()

使用该方法可以设置自定义的请求头部信息。该方法接收两个参数:

(1)头部字段的名称

(2)头部字段的值

要成功发送请求,必须在调用open()方法之后且调用send()方法之前调用,如下:

xhr.open("post","example.php",true);
xhr.setRequestHeader("myHeader","myvalue");
xhr.send(null);

五、HTTP的头部信息

XHR对象提供了操作请求头部和响应头部信息的方法。在默认的情况下,在发送XHR请求的同时,还会发送下列头部信息:

  • Accept:浏览器能够处理的内容类型
  • Accept-Charset:浏览器能够处理的字符集
  • Accept-Encoding:浏览器能够处理的压缩编码
  • Accept-Language:浏览器当前设置的语言
  • Connection:浏览器与服务器之间连接的类型
  • Cookie:当前页面设置的任何cookie
  • Host:发出请求的页面所在域
  • Referer:发出请求的页面的URL
    处理的压缩编码
  • Accept-Language:浏览器当前设置的语言
  • Connection:浏览器与服务器之间连接的类型
  • Cookie:当前页面设置的任何cookie
  • Host:发出请求的页面所在域
  • Referer:发出请求的页面的URL
  • User-Agent:浏览器的用户代理字符串

你可能感兴趣的:(前端,javascript,ajax)