原生ajax请求与Promise请求

来源:互联网 发布:苹果cms整合ck播放器 编辑:程序博客网 时间:2024/05/22 11:48
  1. // 简单的ajax原生实现  
  2. var url = 'https://hq.tigerbrokers.com/fundamental/finance_calendar/getType/2017-02-26/2017-06-10';  
  3. var result;  
  4.   
  5. var XHR = new XMLHttpRequest();  
  6. XHR.open('GET', url, true);  
  7. XHR.send();  
  8.   
  9. XHR.onreadystatechange = function() {  
  10.     if (XHR.readyState == 4 && XHR.status == 200) {  
  11.         result = XHR.response;  
  12.         console.log(result);  
  13.     }  
  14. }  
  15.   
  16.   
  17. var url = 'https://hq.tigerbrokers.com/fundamental/finance_calendar/getType/2017-02-26/2017-06-10';  
  18.   
  19. // 封装一个get请求的方法  
  20. function getJSON(url) {  
  21.     return new Promise(function(resolve, reject) {  
  22.         var XHR = new XMLHttpRequest();  
  23.         XHR.open('GET', url, true);  
  24.         XHR.send();  
  25.   
  26.         XHR.onreadystatechange = function() {  
  27.             if (XHR.readyState == 4) {  
  28.                 if (XHR.status == 200) {  
  29.                     try {  
  30.                         var response = JSON.parse(XHR.responseText);  
  31.                         resolve(response);  
  32.                     } catch (e) {  
  33.                         reject(e);  
  34.                     }  
  35.                 } else {  
  36.                     reject(new Error(XHR.statusText));  
  37.                 }  
  38.             }  
  39.         }  
  40.     })  
  41. }  
  42.   
  43. getJSON(url).then(res => console.log(res));

  44. 转自:http://blog.csdn.net/qq_29849641/article/details/69233788  

//用于发送ajax的post请求
    $.post=function (url,data,callback){
    var xhr=$.int();;    //调用Ajax对象
    xhr.open('post','url');     //初始化,用post请求方式连接到php文件,这样不会产生缓存问题
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencode');  //设置请求头信息,本次提交的数据是字符数据
    xhr.onreadystatechange=function(){    //设置Ajax对象的状态码发生改变时所触发的回调函数
    if (xhr.readyState==4 && xhr.status==200) {
        callback(xhr.responseText);
        };
    }
    xhr.send(data);    //发送请求,由于初始化时使用post请求方式,所以需添加post请求时所传递的函数(如果是get请求,刚为空null)
    }
//jQuery封装ajax
(function  () {
//用于得到一个dom对象
var $=function  (id) {
return document.getElementById(id);
}
    //用于得到一个ajax对象
    $.init=function (){
    try{return new XMLHttpRequest()}catch(e){}
    try{return new ActiveXobject('Microsoft.XMLHTTP')}catch(e){}
    alert('error');
    }
    //用于发送ajax的get请求
    $.get=function(url,data,callback,type){
    var xhr=$.int();
    if(data!=null){
    url=url+'?'+data;//有时候ajax只想传递一个过程,不需要传递参数时
    }
    xhr.open('get',url);
    xhr.setRequestHeader("If-Modified-Since","0");
    xhr.onreadystatechange=function(){
            if (xhr.readyState==4 && xhr.status==200) {
                 if (type==null) {
                    type='text';    //如果没有传递type参数,让type的值默认为text
                };
               if (type=='text') {
                 callback(xhr.responseText);    //返回字符串类型
               };
               if (type=='xml') {
                  callback(xhr.responseXML);    //返回XML类型
               };
               if (type=='json'){
                  var str=eval('('+xhr.responseText+')');   //转成对象
                  callback(str);    //返回json类型
               }
            } 
    }
    xhr.send(null);
    }
    //用于发送ajax的post请求
    $.post=function (url,data,callback,type){
        var xhr=$.int();;    //调用Ajax对象
        xhr.open('post','url');     //初始化,用post请求方式连接到php文件,这样不会产生缓存问题
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencode');  //设置请求头信息,本次提交的数据是字符数据
        xhr.onreadystatechange=function(){    //设置Ajax对象的状态码发生改变时所触发的回调函数
            if (xhr.readyState==4 && xhr.status==200) {
                if (type==null) {
                    type='text';    //如果没有传递type参数,让type的值默认为text
                };
               if (type=='text') {
                 callback(xhr.responseText);    //返回字符串类型
               };
               if (type=='xml') {
                  callback(xhr.responseXML);    //返回XML类型
               };
               if (type=='json'){
                  var str=eval('('+xhr.responseText+')');   //转成对象
                  callback(str);    //返回json类型
               }
            };
        }
        xhr.send(data);    //发送请求,由于初始化时使用post请求方式,所以需添加post请求时所传递的函数(如果是get请求,刚为空null)
    }
window.$=$;
})();


原创粉丝点击