原生js和jQuery发送ajax详解

        jQuery发送ajax的方法用的多了,原生的都忘了怎么去写了。为了不忘本,现在我分别对原生js和jQuery发送ajax的每一步做一个详细的解释。

一、发送ajax的原理和步骤。

        ajax的原理是在HTTP协议的基础上以异步的方式通过XMLHttpRequest对象与服务器进行通信。XMLHttpRequest是浏览器内建对象,用于在浏览器后台与服务器通信(交换数据)。因此,可以不用刷新整个页面实现页面的部分更新。

  1、创建异步对象

        启动浏览器内建对象XMLHttpRequest,用于在浏览器后台与服务器通信(交换数据)。

  2、设置请求行

  3、设置请求头

  4、设置请求体

  5、接收返回的数据

     5.1、设置响应报文

    (1)报文行:状态码200 ok表示当前服务器响应成功。

            状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

            1xx:指示信息 —— 表示请求已接收,继续处理。

            2xx:成功 —— 表示请求已被成功接收、理解、接受。

            3xx:重定向 —— 要完成请求必须进行更进一步的操作。

            4xx:客户端错误 —— 请求有语法错误或请求无法实现。

            5xx:服务器端错误 —— 服务器未能实现合法的请求。

     (2)报文头:服务器给客户端的一些额外的信息。

     (3)报文体:4表示返回的数据可以使用。返回responseText:普通字符串。返回responseXML:XML文件。

返回数据的属性有五个状态:

            xhr.readyState = 0时,(未初始化)还没有调用send()方法。

            xhr.readyState = 1时,(载入)已调用send()方法,正在发送请求。

            xhr.readyState = 2时,(载入完成)send()方法执行完成,已经接收到全部响应内容。

            xhr.readyState = 3时,(交互)正在解析响应内容。

            xhr.readyState = 4时,(完成)响应内容解析完成,可以在客户端调用了。

     (4)onreadystatechange 是 Javascript 的事件的一种,其意义在于监听 XMLHttpRequest 的状态是否发生改变。

        注:为什么设置请求行、请求头、请求体以及接收返回的数据涉及到了与数据库的连接的知识,由于这里不是重点,所以不做过多的叙述,有兴趣的小伙伴可以去查一下客户端与服务器交互的步骤和原理。

二、原生js发送ajax

  1、发送get请求

    启动内建对象XMLHttpRequest

       var xhr = XMLHttpRequest();

    设置请求行

       open('get','url?发送的内容(键1=值1,键2=值2…)');

    设置请求头

       get请求不需要设置请求头

    设置请求体

       send(null);

    监听 XMLHttpRequest 的状态是否发生改变

       xhr.onreadystatechange = function(){

            if(xhr.status == 200 &&xhr.readyState == 4){

                            //getAllResponseHeaders:获取所有响应头

                            //responseText:接收普通字符串

                            //在js中通过JSON.parse方法将json格式的字符串转换为js数组或者对象

                            //responseXML:专门用来接收服务器返回的xml数据的

                            //responseXML:获取的结果可以理解为一个dom结构,我们可以使用dom的方式来获取这个返回值是的数据

             }

        }

2、发送post请求

       post请求和get请求基本上都一样,只有设置请求行、请求头和请求体的时候不一样,在此仅指出其中的不同。

    设置请求行

       open(‘post’,url);

    设置请求头

       xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

    设置请求体

        xhr.send(发送的参数);

三、jQuery发送ajax

    1、引入jQuery

    2、各个参数介绍

           $.ajax({}) 可配置方式发起Ajax请求

           $.get() 以GET方式发起Ajax请求

           $.post() 以POST方式发起Ajax请求

           $('form').serialize()序列化表单(即格式化key=val&key=val)

           url 接口地址

           type 请求方式

           timeout 请求超时

           dataType 服务器返回格式

           data 发送请求数据

           beforeSend:function () {} 请求发起前调用

           success 成功响应后调用

           error 错误响应时调用

           complete 响应完成时调用(包括成功和失败)

      3、常用格式

           $.ajax({

           type:'请求类型’,

           url:'请求地址’,

                  data:{},

                  dataType:’’,

           success:function(result){

                  成功后的操作

           }

    })

        以上为原生js发送ajax和jQuery发送ajax的详细描述,希望大家在使用jQuery这种方便的方式发送ajax的时候,不要忘记ajax发送的机理。很多东西只有你知道他是怎么来的,才能更好的使用他,并且不容易出错,即使出错了,根据其由来,也相对容易地找到错误点。


你可能感兴趣的:(前后端交互)