美文网首页Ajax
函数API的封装,仿jQuery调用请求方法

函数API的封装,仿jQuery调用请求方法

作者: CondorHero | 来源:发表于2019-04-07 00:16 被阅读17次
请求结果!

一、HTML文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>函数 API的封装</title>
</head>
<body>
    <!-- 引包 -->
    <script src = "js/myAjax.js"></script>
    <script>
        myAjax.get("index.php",{"xingming":"Condor","age":18},function(err,data){
            if(err){
                // 服务器未成功加载提示
                alert(err);
            }else {
                // 弹出打开的内容
                alert(data);
            }
        });
    </script>
</body>
</html>

二、PHP文件

<?php
   echo "你的名字是:".$_GET["xingming"]."你的年龄:".$_GET["age"];
 ?>

三、JS库封装

(function(){

    //唯一向外暴露的顶层变量
    var myAjax = window.myAjax = {};
    //作者、版本号等等信息
    myAjax.author = "学贤社";
    myAjax.version = "1.0.0";

    //myAjax对象有两个属性,get、post属性,都是函数
    myAjax.get = function(URL,queryJSON,callback){
        //创建xhr对象,解决兼容问题
        if(window.XMLHttpRequest){
            var xhr = new XMLHttpRequest();
        }else {
            var xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        //结果返回之后做的事情
        xhr.onreadystatechange = function(){
            if(xhr.readyState == 4){
                if(xhr.status >= 200 && xhr.status <300 || xhr.status == 304){
                    callback(null,xhr.responseText);
                }else {
                    callback(new Error("服务器错误!请稍后重试!"),undefined);
                }
            }
        }
        //把JSON变成k=v&k=v形式
        var querystring = querystringJSON(queryJSON);
        //配置三个属性
        xhr.open("get",URL + "?" + querystring,true);
        //发送内容
        xhr.send(null);
    };
    myAjax.post = function(URL,queryJSON,callback){
        if(window.XMLHttpRequest){
            var xhr = new XMLHttpRequest();
        }else {
            var xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }

        xhr.onreadystatechange = function(){
            if(xhr.readyState == 4){
                if(xhr.status >= 200 && xhr.status <300 || xhr.status == 304){
                    callback(null,xhr.responseText);
                }else {
                    callback(new Error("服务器错误!请稍后重试!"),undefined);
                }
            }
        }
        var querystring = querystringJSON(queryJSON);

        xhr.open("post",URL,true);
        xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        xhr.send(querystring);
    };
    querystringJSON = function(query){
        //内部函数,查询json变为查询字符串
        //输入一个{"age":18,"sex":"男"}
        //返回一个name=kaola&age=18&sex=%E8%C6%B6
        var arr = [];
        for(var k in query){
            arr.push(k + "=" + encodeURIComponent(query[k]));
        }
        return arr.join("&");
    }
}
)();

相关文章

  • 函数API的封装,仿jQuery调用请求方法

    一、HTML文件 二、PHP文件 三、JS库封装

  • Jquery 中的get和post请求

    关于 JQuery 中的 get 和 post 请求,我在前面已经模仿过了,详情请见以下文章。函数API的封装,仿...

  • 封装微信小程序请求

    封装wx.request 封装api 封装请求调用

  • 12、Vue_封装API、插槽slot/v-slot

    一、封装API 一些常用的方法可以封装成API,然后进行调用 例子 :把之前的axios的一个请求封装成api1....

  • jQuery>ajax方法API

    ajax在jq中封装的函数,AIP。 1.请求加载,错误处理,全局调用方法: 2.请求加载,错误处理,局部调用方法...

  • 学习jQuery

    JQuery 是一个强大的js库。拥有强大的链式调用,很好的选择器,AJAX请求封装,简单的api。 我们平时需要...

  • 使用原生 API 实现 jQuery

    函数封装 html javascript 以上两种方法调用还是不理想,模拟jQuery的做法: 设计原则:内容(H...

  • JS设计模式5 - 命令模式

    命令模式 目标 封装函数调用,请求,操作。解耦对象的调用和方法的实现。 何时使用 需要回调能力 请求需要执行很多次...

  • 使用promise封装ajax请求

    封装一个ajax请求方法: 调用ajax方法,发送请求

  • jQuery

    jQuery 能做什么? jQuery将JavaScript的代码进行了封装,处理了兼容性问题,提供API进行调用...

网友评论

    本文标题:函数API的封装,仿jQuery调用请求方法

    本文链接:https://www.haomeiwen.com/subject/qbanbqtx.html