zoukankan      html  css  js  c++  java
  • Promise实现ajax

    利用Promise实现ajax

    GET

        function getAjax(url) {
            return new Promise((resolved,rejected)=>{
                //创建ajax对象
                let ajax = new XMLHttpRequest();
                //配置参数
                ajax.open('get',url,true)
                //发送请求
                ajax.send();
                //请求成功之后
                ajax.onload = function () {
                    if(this.status === 200){
                        console.log(ajax.responseText)
                        resolved(ajax.responseText);
                    }else{
                        rejected();
                    }
    
                }
            })
        }
    View Code
    getAjax(url).then().catch()

    POST

        function postAjax(url,param) {
            return new Promise((resolved,rejected)=>{
                //创建ajax对象
                let ajax = new XMLHttpRequest();
                //配置参数
                ajax.open('post',url,true);
    
                //设置请求头,表示我传递的参数的类型
                xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                //发送请求,并将数据传递过去
                ajax.send(JSON.stringify(data));
    
                //请求成功之后
                ajax.onload = function () {
                    if(this.status === 200){
                        console.log(ajax.responseText)
                        resolved(ajax.responseText);
                    }else{
                        rejected();
                    }
    
                }
            })
        }
    View Code
    getAjax(url,param).then().catch()

    GET POST合并

        function myAjax(type,url,params) {
            return new Promise((resolved,rejected)=>{
    
                //创建ajax对象
                let ajax;
                //注意,不要根据浏览器的navigator.userAgent来检测浏览器是否支持某个JavaScript特性,一是因为这个字符串本身可以伪造,二是通过IE版本判断JavaScript特性将非常复杂。
                if (window.XMLHttpRequest) {
                    ajax = new XMLHttpRequest();
                } else {
                    ajax = new ActiveXObject('Microsoft.XMLHTTP');
                }
    
    
                if(type == 'get' || type == ''){//get
                    //配置参数
                    ajax.open('get',url,true)
                    //发送请求
                    ajax.send();
                }else if(type == 'post'){//post
                    //配置参数
                    ajax.open('post',url,true);
                    //设置请求头,表示我传递的参数的类型
                    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                    //发送请求,并将数据传递过去
                    ajax.send(JSON.stringify(data));
                }
    
                //请求成功之后
                request.onreadystatechange = function (){
                    if (request.readyState === 4){
                        if(this.status === 200){
                            console.log(ajax.responseText)
                            resolved(ajax.responseText);
                        }else{
                            rejected();
                        }
                    }
                }
    
            })
        }
    View Code
        getAjax('get').then().catch()
        getAjax('post',param).then().catch()
  • 相关阅读:
    linux 统计文件行数的命令效率
    使用mysqldump导入不成功解决方法
    shell中获取当前目录
    shell读取文档中的命令并执行
    读取文件,文件内容包含空格Tab和回车提取想要的数据
    ls命令中的--time-style使用
    Vmware中网卡未启用,安装系统后再启用网卡,eth0如何设置
    lvm逻辑卷扩展方法
    linux小技巧 一
    解决ARCGIS10.2与VS2013不兼容
  • 原文地址:https://www.cnblogs.com/shaokevin/p/9796882.html
Copyright © 2011-2022 走看看