博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原生ajax请求与Promise请求
阅读量:4157 次
发布时间:2019-05-26

本文共 2971 字,大约阅读时间需要 9 分钟。

  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.$=$;
})();
你可能感兴趣的文章
深入了解php底层机制
查看>>
PHP中的stdClass 【转】
查看>>
XHProf-php轻量级的性能分析工具
查看>>
OpenCV gpu模块样例注释:video_reader.cpp
查看>>
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
Mysql复制表以及复制数据库
查看>>
如何使用 systemd 中的定时器
查看>>
linux进程监控和自动重启的简单实现
查看>>
OpenFeign学习(六):OpenFign进行表单提交参数或传输文件
查看>>
Ribbon 学习(三):RestTemplate 请求负载流程解析
查看>>
深入理解HashMap
查看>>
XML生成(三):JDOM生成
查看>>
Ubuntu Could not open lock file /var/lib/dpkg/lock - open (13:Permission denied)
查看>>
C#入门
查看>>
C#中ColorDialog需点两次确定才会退出的问题
查看>>
数据库
查看>>
nginx反代 499 502 bad gateway 和timeout
查看>>
linux虚拟机安装tar.gz版jdk步骤详解
查看>>
k8s web终端连接工具
查看>>
手绘VS码绘(一):静态图绘制(码绘使用P5.js)
查看>>