ajax是js中与后端交互的方法
在我们练习的时候,需要先将电脑变成一台服务器,使用node或者nginx。后期我们做项目的时候,会有专用的服务器
js中总体来说分为四步:1、创建变量;2、准备数据;3、发送请求;4接收数据;
最简单的代码如下
// ajax 最重要的是1个对象 【XMLHttpRequest 对象】
// 1. 创建对象
var xhr = new XMLHttpRequest();
// 2. 调用此对象中【 准备】(打开)方法
// 参数1: 请求数据的方式 GET / POST , put 等
// 参数2: 请求数据的地址
// 参数3: false 是同步的方式, true 就是异步
xhr.open("GET", "http://localhost:8080/ajax/ajaxtest", false);
// 3. 发送
xhr.send();
// 4. 获取数据
console.log( xhr.responseText );
new XMLHttpRequest()代表着创建一个ajax对象
open是这个ajax对象中的方法,里面包含三个参数,前两个参数需要以字符串的形式上传
参数1: 请求数据的方式 GET / POST , put 等
最常用的GET和POST,其中GET有传输快,容量小的特点,一般用来传输小规模的数据,而POST则相反,传输慢,容量大,数据内存大的话建议使用POST方法
参数2: 请求数据的地址
http://localhost:8080/ajax/ajaxtest代表这服务器地址,http代表http协议,所有服务器都必须基于http协议来传输数据,localhost代表本机,也可以使用服务器ip地址,比如192.168.104.101,8080代表服务器端口,这个端口的号码是由后端决定的。根据http协议,只有同源(协议、ip地址、传输端口都相同)才能传输数据,初次之外,要么后端代码请求数据,要么使用 img、script、link、ifame这四个标签来请求非同源的数据
参数3: false 是同步的方式, true 就是异步
使用flase同步传输的情况下,需要等待前一个数据传输完毕才能传输下一个数据,而true异步传输则是所有数据可以同时传输,不存在数据排队的情况,也是异步传输来实现局部刷新。
send()’是用来发送请求,open方法中确定请求的地址。目标文件位置后 使用send方法来向服务器发送请求。
当服务器接收到发送的请求后, 会自动创建一个数据,我们可以使用xhr.responseText来获取它,那么如何知道服务器成功接收到我们的请求并且成功返回我们请求的数据呢?
xhr.onreadystatechange 是一个方法,代表着当readystate状态发生改变时,xhr.readyState代表着我们请求数据进行的步骤,当进行到第四步时,也就是说xhr.readyState == 4时,说明服务器成功返回了我们的数据,xhr.status == 200则代表着返回的数据是正确的数据,也就是服务器是正常的。只有当这两个数据为真时,我们才是正常的接收到了我们请求的数据。
当服务器返回我们需要的数据时,它传输给我们是以字符串的形式,也就是说我们接收到的数据是一个字符串,如果其中的数据需要计算或者是一个变量,我们需要把它转换成js对象形式,代码如下
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
// 获取数据。【注意】类型是字符串,因为网络传输的是字符
var str = xhr.responseText;
// 字符串转 js 对象 【一定要记得转换下】
var obj = JSON.parse(str);
// 更新到页面上
gx(obj)
}
以上是ajax最基本的请求数据的方法。
网友评论