对jquery中的$.ajax二次封装 从而多次调用 今天一整天都在想这个事情

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对jquery中的$.ajax二次封装 从而多次调用 今天一整天都在想这个事情相关的知识,希望对你有一定的参考价值。

当然了  我封装的是$.ajax  可以传参数  多次调用请求接口  为啥我们这地方不注重前端呢  我都不知道为啥去坚持 不说了  上代码

js文件

$ajax.js

$(function(){
        /**
         * ajax封装
         * url 发送请求的地址
         * data 发送到服务器的数据,数组存储,如:{"username": "张三", "password": 123456}
         * succCallback 成功回调函数
         * errorCallback 失败回调函数
         * type 请求方式("POST" 或 "GET"), 默认已经设置为 "POST"
         * dataType 预期服务器返回的数据类型,常用的如:xml、html、json、text
         * reference jquery-1.7.1.js
         */

        //插入loading
        var html = "";
            html += ‘<div class="js_loading">‘;
            html +=     ‘<div class="mask"></div>‘;
            html +=     ‘<div class="loading">‘;
            html +=         ‘<span><img src="loading.gif"></span>‘;
            html +=     ‘</div>‘;
            html += ‘</div>‘;
        $("body").append(html);

        function $ajax(url, postData, succCallback, errorCallback, type, dataType){
            var type = type || "post";
            var dataType = dataType || "json";

            $.ajax({
                type: type,
                url: url,
                data: postData,
                dataType: dataType,

                beforeSend: function(){  //开始loading
                    $(".js_loading").show();                    
                },

                success: function(res){
                    if(res.success){
                        if(succCallback){
                            succCallback(res);
                        }                       
                    }else{
                        if(errorCallback){
                            errorCallback(res);
                        }
                    }                   
                },

                complete: function(){   //结束loading
                    //$(".js_loading").remove();
                    $(".js_loading").hide();
                }
            });
        }
    });

是不是一看就明白了  so easy  不要觉得那些面试官出的题目有多难  只是么有反应过来

 

好了 接下来就是调用了

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>ajax再封装</title>
<style>
.js_loading{display:none;}
.mask{background:rgba(255, 255, 255, 0);position:fixed;left:0;top:0;width:100%;height:100%;z-index:1;}
.loading{position:fixed;left:0;top:0;width:100%;height:100%;z-index:2;display:box;box-pack:center;box-align:center;display:-webkit-box;-webkit-box-pack:center;-webkit-box-align:center;}
.loading span{display:block;background:#333;width:40px;height:40px;border-radius:3px;text-align:center;}
.loading img{width:26px;margin-top:7px;}
</style>
<script src="jquery-1.7.1.js"></script>
</head>
<body>
<button type="button" class="btn">获取</button>
<div class="box"></div>
<script>
    $(function(){
        $(".btn").click(function(){
            var postData = {
                username: ‘张三‘,
                password: 123456
            };
            $ajax(
                ‘test.asp‘, 
                postData, 
                function(res){  //成功
                    $(".box").html(res.firstName);
                },
                function(res){  //失败
                    $(".box").html(res.fail);
                }
            );
        });
    });
</script>       
</body>
</html>

还有就是请求的页面 test.asp

{
    "success":true,
    "firstName":"获取成功!!!",
    "lastName":"哈哈...",
    "fail":"获取失败!!!"
}

自己试试吧  思路一疏通  写这类的方法不是问题

 

关机睡觉

---恢复内容结束---

当然

以上是关于对jquery中的$.ajax二次封装 从而多次调用 今天一整天都在想这个事情的主要内容,如果未能解决你的问题,请参考以下文章

Jquery中的ajax

使用jquery封装的ajax怎么能隔一秒定时发送一次请求

jQuery对ajax的封装部分详解和案例

jQuery中的Ajax

对 Web 服务的 jQuery Ajax 调用似乎是同步的

JavaScript封装Ajax工具函数及jQuery中的ajax