xmlHttpRequest、Axios、Ajax

968 阅读1分钟

xmlHttpRequest

w3c上的使用例子:

<script type="text/javascript">
var xmlhttp;
function loadXMLDoc(url)
{
xmlhttp=null;
if (window.XMLHttpRequest)
  {// code for all new browsers
  xmlhttp=new XMLHttpRequest();
  }
else if (window.ActiveXObject)
  {// code for IE5 and IE6
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  // 第一步创建xmlHttpRequest对象
  }
if (xmlhttp!=null)
  {
  xmlhttp.onreadystatechange=state_Change;   // 第二步绑定事件回调,readyState改变的一个回调
  xmlhttp.open("GET",url,true);             // 第三步配置请求方式、url等,然后send发送
  xmlhttp.send(null);
  }
else
  {
  alert("Your browser does not support XMLHTTP.");
  }
}

function state_Change()
{
if (xmlhttp.readyState==4)      //  第四步,回调函数中通过判断状态码等,处理结果。
                                //  貌似结果都是在xmlhttpRequest对象属性上
  {// 4 = "loaded"
  if (xmlhttp.status==200)
    {// 200 = OK
    // ...our code here...
    }
  else
    {
    alert("Problem retrieving XML data");
    }
  }
}
</script>

Axios

axios 是一个基于Promise的 HTTP 客户端(库),本质上也是对原生XHR的封装,只不过它是Promise的实现版本,符合最新的ES规范,它本身具有以下特征:
1.从浏览器中创建 XMLHttpRequest
2.支持 Promise API
3.客户端支持防止CSRF
4.提供了一些并发请求的接口(重要,方便了很多的操作)
5.从 node.js 创建 http 请求
6.拦截请求和响应
7.转换请求和响应数据
8.取消请求
9.自动转换JSON数据

Ajax与Axios区别

axios是通过Promise实现对ajax技术的一种封装,就像jquery对ajax的封装一样

axios是ajax,ajax不止axios;axios有的ajax都有,ajax有的axios不一定有。

使用方法基本一样,只有参数不同,直接看代码:

axois:

axios({
            url: 'http://jsonplaceholder.typicode.com/users',
            method: 'get',
            responseType: 'json', // 默认的
            data: {
                //'a': 1,
                //'b': 2,
            }
        }).then(function (response) {
            console.log(response);
            console.log(response.data);
        }).catch(function (error) {
            console.log(error);
        })

ajax:

$.ajax({
            url: 'http://jsonplaceholder.typicode.com/users',
            type: 'get',
            dataType: 'json',
            data: {
                //'a': 1,
                //'b': 2,
            },
            success: function (response) {
                console.log(response);
            }
        })