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));
            }
        })
  • 相关阅读:
    attr 修改IMG src
    64转2
    :eq
    DOM0和D0M2级事件
    c's's透明度
    span标签 宽度无效解决方案
    CSS 点击事件
    input点击后的 默认边框去除
    js
    CSS 的 ID 和 Class 有什么区别,如何正确使用它们。
  • 原文地址:https://www.cnblogs.com/helloNico/p/10579022.html
Copyright © 2011-2022 走看看