原生Ajax使用

ajax=>>> Async Javascript And XML,  Asynchronous 是异步的意思

ajax可以在网页不刷新的情况下请求数据,实现网页局部刷新

ajax是异步的,通过XmlHttpRequest 对象来向服务器发异步请求,从服务器获得数据,然后用JavaScript 来操作 DOM 来更新页面。

-创建 Ajax 的核⼼对象 XMLHttpRequest 对象 
-通过 XMLHttpRequest的 open() ⽅法与服务端建⽴连接 get、post请求数据
-通过 XMLHttpRequest的 send() ⽅法把请求所需的数据内容发送给服务器端 
-通过 XMLHttpRequest 的 onreadystatechange 事件监听服务器端的通信状态 
-readystate==4请求完成(成功和失败)if(status==200)成功else失败
-将处理结果更新到 HTML ⻚⾯中。

XMLHttpRequest对象的属性

它的属性有:

onreadystatechange: 每次状态改变所触发事件的事件处理程序。

 responseText :从服务器进程返回数据的字符串形式。

 responseXML: 从服务器进程返回的DOM兼容的文档数据对象。

 status :从服务器返回的数字代码, 比如常见的404( 未找到) 和200( 已就绪)

 status Text :伴随状态码的字符串信息

   readyState: 0 请求未初始化 刚刚实例化xmlHttpRequest

   readyState: 1 客户端与服务器建立链接 调用了open方法

   readyState: 2 请求已经被接受

   readyState: 3 请求正在处理中

   readyState: 4 请求处理完成,响应已就绪 已经拿到了服务器的返回结果

let xhr = new XMLHttpRequest();

   //2.为xhr.onreadystatechange设置事件监听

    xhr.onreadystatechange = function (){

        if(xhr.readyState === 4){

            switch (xhr.status){

                case 200:{

                    console.log(JSON.parse(xhr.responseText));

                    break;

                }

                case 404:{

                    console.log("页面或者资源找不到");

                    break;

                }

            }

        }

    }


    

//3.调用xhr.open(请求方式,请求地址,同步异步)

    xhr.open("GET","https://cnodejs.org/api/v1/topicss",false);

    //method(请求方式  string

    //GET获取数据 POST发送数据 DELETE删除 PUT修改

    //url(请求地址  string

    //async(同步异步  布尔 false=>异步    true=>同步  默认值是false

    //username password



 //4.发送请求的数据

    xhr.send(null)

    console.log(xhr);
function ajax(url, success) {
    // 1. 准备一个电话(创 建一个ajax对象)
    var xhr = new XMLHttpRequest()
    // 2.拨号(连接到服务器)
    xhr.open('get', url, true);
    // 3.说出你的需求(发送请求)
    xhr.send();
    // 4.对方的反馈(接收返回值)
    xhr.onreadystatechange = function() {
        if(xhr.readyState === 4) { // 请求完成
            if(xhr.status === 200) { // 成功
                success && success(xhr.responseText) // responseText: 响应文本(服务器返回的数据)
            } else { // 失败了
                console.log('失败了');
            }
        }
    }
}

ajax('data.json', function(data) {
    console.log(data);
})

    http常见状态码

    1xx 请求正在处理

    2xx 一般都表示成功

    3xx 一般都表示重定向

    4xx 一般都表示资源找不到 客户端错误

    5xx 服务器内部错误


http是一个无状态的(在服务器与客户端通讯的过程中,服务器不知道客户端是谁)

通过 token的方式 还有 cookie和session的方式来解决


 

   跨域 (不同源) JSONP CORS(后端) Proxy(代理)

   非跨域 (同源)

同源 协议://域名:端口号  都一样 就是同源  如果有一个不一样 就是非同源(跨域)



 

    https://www.cnodejs.org/api/v1/topics:80

    https://mail.qq.com

    协议(http/https/ftp/smtp/pop3)

    域名(www.一级域名.二级域名.顶级域名(org/com/cn/edu/gov))  /路径/路径

    端口号(http:80/https:443)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值