Promise实现ajax

Posted shaokevin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()

 

以上是关于Promise实现ajax的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段12——JavaScript的Promise对象

html PHP代码片段: - AJAX基本示例:此代码演示了使用PHP和JavaScript实现的基本AJAX功能。

Promise

Promise实现ajax

异步解决方案promise及源码实现

Promise+js实现ajax请求