AJAX知识整理

AJAX

Asynchronous Javascript And XML ( 异步的JS和XML )
AJAX异步发送一个HTTP请求,去后端获取数据,带回给前端浏览器,让浏览器处理。
AJAX不是一门技术,是一整套技术体系包含HTML、CSS、DOM、BOM、JSON等

Ajax概述

它是浏览器提供的一套方法,可以实现页面无数据更新,提高用户浏览网站应用的体验。

Ajax的应用场景

1.页面上拉加载更多数据
2.列表数据无刷新分页
3.表单项离开焦点数据验证
4.搜索框提示文字下拉列表

Ajax运行原理及实现

Ajax的实现步骤
1.创建Ajax对象

    var xhr = new XMLHttpRequst();

2.绑定事件

    xhr.onreadystateChange = function(){
     			//xhr.readyState 是一个属性,具有5个值
     			 0   未初始化
     			 1   调用了open()方法
     			 2   已经接收到响应头
     			 3   解析了一部分数据,不一定解析完毕
     			 4   解析完毕全部数据,数据可以使用了
     			  if(xhr.readyState === 4){
     			  		//通过xhr.resoponseText 获取返回的数据
     			  		alert(xhr.responseText)
     			  }
}	

3.调用open()方法:告诉Ajax请求地址以及请求方式

xhr.open('get', 'http://www.example.com', true);

4.调用send()方法:负责望请求正文中添加数据(如果是post请求,需把数据往send里传递)

xhr.send();
请求参数传递

GET请求方式
     xhr.open(‘get’, ‘http://www.example.com?name=zs&age=20’);
參数名称=参数值&參数名称=参数值
POST请求方式
//设置请求参数格式的类型(post请求必须设置)
     xhr.setRequesHeader(‘Content-Type’, ‘application/x-www-form-urlencoded’);
     xhr.send(‘name=zs&age=20’);

封装get和post请求

//封装在js中
var AJAX = {
    get(url, data, callback){
        var querystring = "";
        for(var i in data){
            //username=xwen&password=1123343;
            querystring += i + "=" + data[i] + "&";
        }
        //截取字符串,不需要最后的&
        querystring = querystring.slice(0, -1);
        //1.初始化ajax对象
        var xhr = new XMLHttpRequest();
        //2.监听状态
        xhr.onreadystatechange = function(){
            if(this.readyState === 4){
                var obj = xhr.responseText;
                callback(obj);
            }
        }
        //3.监听路径和方式
        //true参数:代表异步传输
        xhr.open('get', url + "?" + querystring, true);
        //4.发送请求
        xhr.send();
    },

    post(url, data, callback){
        var querystring = "";
        for(var i in data){
            querystring += i + "=" + data[i] + "&";
        }
        querystring = querystring.slice(0, -1);
        //1.初始化ajax对象
        var xhr = new XMLHttpRequest();
        //2.监听状态
        xhr.onreadystatechange = function(){
            if(this.readyState === 4 && this.status === 200){
                callback(xhr.responseText);
            }
        }
        //3.监听路径和方式
        xhr.open('post', url, true);
        //将请求头内容更改,改为表单的内容类型
        xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded;charset=utf-8");
        //4.发送请求
        xhr.send(querystring);
    }
}


**在html中传数据**
var info = {
    username:"xwena",
    password: "12233"
}
 AJAX.get("http://localhost:90//get.php",info, function(data){
   console.log(data);
 });

AJAX.post("http://localhost:90//post.php",info, function(data){
    console.log(data);
})
onreadystatechange事件

当请求被发送到服务器时,我们需要执行一些基于响应的任务。
每当 readyState 改变时,就会触发 onreadystatechange 事件。

readyState:是一个属性共有5个值

0请求未初始化(还没有调用 open())
1调用了open方法,服务器连接已建立 (还没有调用 send())
2请求已接收,正在处理
3请求处理中
4请求已完成,切响应已就绪

status

1xx信息响应类,表示接收到请求并且继续处理
2xx处理成功响应类,表示动作被成功接收、理解和接受
3xx重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx客户端错误,客户请求包含语法错误或者是不能正确执行
5xx服务端错误,服务器不能正确执行一个正确的请求

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值