zoukankan      html  css  js  c++  java
  • 封装一个类似jquery的ajax方法

    //封装一个类似jquery的ajax方法,当传入参数,就可以发送ajax请求
    //参数格式如下{
    // type:"get"/"post",
    // dataType:"json"/"jsonp",
    // url:"地址",
    // data:{key:value}
    // success:function(){
    // }
    // }
    //还需要一个跨域方法,可以访问远程服务器的数据
    
    function myAjax(obj){
        var type = obj.type || "get";
        var dataType = obj.dataType || "json";
        var url = obj.url;
        var data = obj.data ||{};
        var success = obj.success;
        //把data拼接成字符串,dataStr就是参数字符串
        var dataStr = "";
        //key=key&com=com&on=flsjfsjdfdsf
        for(var key in data){
            dataStr+=key+"="+data[key]+"&"
        }
        dataStr = dataStr.slice(0,-1);
        if(dataType=="json"){
            var xhr = new XMLHttpRequest();
            if(type=="get"){
                xhr.open("get",url+"?"+dataStr);
                xhr.send(null);
            }else if(type=="post"){
                xhr.open("post",url);
                xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
                xhr.send(dataStr)
            }
            xhr.onreadystatechange=function(){
                if(xhr.status==200&&xhr.readyState==4){
                    var json = xhr.responseText;
                    json = JSON.parse(json);
                    success(json);
                }
            }
        }else if(dataType=="jsonp"){
            //需要有一个函数名,这个函数名要保证不会重名
            var date = new Date();
            var cbname = "myJsonp"+date.getTime()+Math.random().toString().slice(2);
            //我们要把你传入success对应的函数,放在一个特定函数里面
            window[cbname]=function(data){
                success(data);
                //newScript.parentNode.removeChild(newScript);
            };
            //新建一个script标签,里面的src链接到的就是接口地址(包含参数);
            var newScript = document.createElement("script");
            if(dataStr==""){
                newScript.src = url+"&callback="+cbname;
            }else{
                newScript.src = url+"?"+dataStr+"&callback="+cbname;
            }
            document.body.appendChild(newScript);
        }
    }
  • 相关阅读:
    父子进程 signal 出现 Interrupted system call 问题
    一个测试文章
    《淘宝客户端 for Android》项目实战 html webkit android css3
    Django 中的 ForeignKey ContentType GenericForeignKey 对应的数据库结构
    coreseek 出现段错误和Unigram dictionary load Error 新情况(Gentoo)
    一个 PAM dbus 例子
    漫画统计学 T分数
    解决 paramiko 安装问题 Unable to find vcvarsall.bat
    20141202
    js
  • 原文地址:https://www.cnblogs.com/rlann/p/6359732.html
Copyright © 2011-2022 走看看