Ajax的了解及其封装

Ajax的了解及其封装

Ajax是一种在无需重新加载的情况下,能够更新部分网页的技术。
通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
例如:微信的点赞,当我们给一个人点赞时,已经点赞过的标志即会实时的出现在此人的点赞区,并且没有整个网页更新。即可以通过ajax实现。

Ajax有两种方式请求,一种同步请求(等待请求完成再去执行),一种异步请求(请求和后续代码同时执行),我们一般默认的为异步请求。
ajax请求后台数据,是通过接口来返回数据。

原生ajax写法为5步:
1、创建对象(请求数据的对象为http,https 进行三次握手 xmlhttprequest)

var http=new XMLHttpRequest();

2、服务器的链接

http.open();

第一个参数指请求的类型 get(www.maodou.com/www/my.php?name=zhangsan) post
第二个参数 请求的路径url
第三个参数可选 同步还是异步 默认异步 true false
第四个参数 和 第五个参数 可选 用户名 密码 用户的身份验证

3、开始给服务器发送请求

 http.send();

参数一般为数据 根据请求类型 可选

4、创建请求读取完成事

 http.onreadystatechange=function (){
        //根据读取的状态去判断
       /!* http.readyState  4  请求读取完成*!/
        /!*http.status  200  读取的状态是成功*!/
        /!*http.response  返回结果*!/
        if(http.readyState==4&&http.status==200)
        {
            console.log(http.response)  /!* 5.渲染界面*!/
        }
  }

get和post两种http基本请求

get类型:

<script>
    var http=new XMLHttpRequest();
    http.open("get","./data/stu.txt");
    http.send();
    http.onreadystatechange=function (){
        if(http.readyState==4&&http.status==200)
        {
            var data=JSON.parse(http.response);
            console.log(data);
        }
    }
</script>

post类型:

<script>
    var a=10;
    var http=new XMLHttpRequest();
    http.open("post","./data/stu.txt",true);
    http.send();
    //原生js  ajax 设置同步会造成线程锁死 onreadystatechange  无法进入
    http.onreadystatechange=function (){
        console.log(1);

    }
</script>

get和post的区别:
在这里插入图片描述
除此之外:
http请求方式中get和post的区别:
1.get是从服务器上获取数据,post是向服务器传送数据。
2.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
3.对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
4.get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。(这里有看到其他文章介绍get和post的传送数据大小跟各个浏览器、操作系统以及服务器的限制有关)
5.get安全性非常低,post安全性较高。
在FORM提交的时候,如果不指定Method,则默认为get请求,Form中提交的数据将会附加在url之后,以?分开与url分开。字母数字字符原样发送,但空格转换为“+“号,其它符号转换为%XX,其中XX为该符号以16进制表示的ASCII(或ISOLatin-1)值。get请求请提交的数据放置在HTTP请求协议头中,而post提交的数据则放在实体数据中;

扫描二维码关注公众号,回复: 5289150 查看本文章

原生js ajax简单封装

<script>
    function ajax(method, url, data, success) {
        var http = new XMLHttpRequest();
        if (method == "get") {
            if (data) {
                url += "?";
                url += data;
            }
            http.open(method, url);
            http.send();
        }
        else {
            http.open(method, url);
            if (data) {
                http.send(data);
            } else {
                http.send();
            }
        }
        http.onreadystatechange = function () {
            if (http.readyState == 4 && http.status == 200) {
                success(http.response);
            }
        }
    }
    ajax("post", "./data/stu.txt", null, showinfo);
    function showinfo(data) {
        var stu = JSON.parse(data);
        var ul = document.createElement("ul");
        for (var i = 0; i < stu.length; i++) {
            var li = document.createElement("li");
            li.innerHTML = "姓名:" + stu[i].name + "/年龄:" + stu[i].age + "/性别:" + stu[i].sex + "/地址:" + stu[i].add;
            ul.appendChild(li);
        }
        document.body.appendChild(ul);
    }
</script>

猜你喜欢

转载自blog.csdn.net/weixin_43175246/article/details/86682533