zoukankan      html  css  js  c++  java
  • 原生ajax的简单封装(仅提供大概的思路,具体还有参数验证的都没做)

    window.onload=function(){
        //get请求========================================================================================
        function ajaxGet(url,success,fail){
            var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("micsoft XMLHttp")
            xhr.onreadystatechange = function(){
                if(xhr.readyState == 4){
                    if(xhr.status == 200){
                        success(JSON.parse(xhr.responseText))
                    }else{
                        fail(xhr.status)
                    }
                }
            }
            xhr.open("get",url,true);
            xhr.send()
        }
    
        //post请求=======================================================================================
        function ajaxPost(url,data,success,fail){
            var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("micsoft XMLHttp")
            xhr.onreadystatechange = function(){
                if(xhr.readyState == 4){
                    if(xhr.status == 200){
                        success(JSON.parse(xhr.responseText))
                    }else{
                        fail(xhr.status)
                    }
                }
            }
            xhr.open("post",url,true);
            xhr.send(data)
        }
    
        //普通调用
        ajaxPost("https://www.apiopen.top/femaleNameApi",{"page":1},function(res){
            console.log(res)
        },function(res){
            console.log(res)
        })
    
    //-------------------------------------------------------------------------分割线-----------------------------------------------------------------------------
    
        //面向对象post方法及调用方式==================================================================================
        function Post(obj){
            var options = obj
            var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("micsoft XMLHttp")
            xhr.onreadystatechange = function(){
                if(xhr.readyState == 4){
                    if(xhr.status == 200){
                        options.success(JSON.parse(xhr.responseText))
                    }else{
                        options.fail(xhr.status)
                    }
                }
            }
            xhr.open(options.method,options.url,options.async);
            xhr.send(options.data)
        }
        //调用
        Post({
            method:"post",
            url:"https://www.apiopen.top/femaleNameApi",
            data:{"page":1},
            async:true,
            success:function(res){
                console.log(res)
            },fail:function(res){
                console.log(res)
            }
        })
    
    }
        function ajax(options){
            var xhr = null;
            var params = formsParams(options.data);
            //创建对象
            if(window.XMLHttpRequest){
                xhr = new XMLHttpRequest()
            } else {
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
            }
            // 连接
            if(options.type == "GET"){
                xhr.open(options.type,options.url + "?"+ params,options.async);
                xhr.send(null)
            } else if(options.type == "POST"){
                xhr.open(options.type,options.url,options.async);
                xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
                xhr.send(params);
            }
            xhr.onreadystatechange = function(){
                if(xhr.readyState == 4 && xhr.status == 200){
                    options.success(xhr.responseText);
                }
            }
            function formsParams(data){
                var arr = [];
                for(var prop in data){
                    arr.push(prop + "=" + data[prop]);
                }
                return arr.join("&");
            }
        }
    
        //调用
        ajax({
            url : "/apis/index.js",  // url---->地址
            type : "GET",   // type ---> 请求方式
            async : true,   // async----> 同步:false,异步:true 
            success : function(data){   //返回接受信息
                console.log(JSON.parse(data));
            }
        })
  • 相关阅读:
    ASP.NET 2.0的页面缓存功能介绍
    第五课 主定理
    HDU 1051 Wooden Sticks
    一行代码让浏览器变编辑器
    算法概论习题1001Forest
    第七课 寻找强连通分量
    8223. Tiling a Grid With Dominoes
    迷宫
    第八课 最小生成树之Kruskal
    解决 Ubuntu 12.04 无法调节屏幕亮度的问题
  • 原文地址:https://www.cnblogs.com/helloNico/p/10579022.html
Copyright © 2011-2022 走看看