Ajax基础入门
一、ajax是什么?
1、ajax 的全称是Asynchronous JavaScript and XML,其中,Asynchronous 是异步的意思。 2、是7种技术的综合,它包含了:JavaScript、xml、xstl、xhtml、dom、 xmlhttprequest、css 3、ajax是一个与服务器端语言无关技术 4、ajax返回的数据格式(文本格式、xml、json) 5、作用: 1、页面五刷新的动态数据交互 2、局部刷新页面 3、界面的美观 4、对数据库的操作 5、可以返回简单的文本格式,也可以返回xml文件格式、json数据格式 6、原理 数据库 ↑ ↓ ↑ ↓ 服务器 ↑ ↓ http请求 ↑ ↓ http响应(文本/json/xml) ↑ ↓ 创建ajax引擎对象 (浏览器) 相当于是一个代理 (帮我买东西,这个就类似ajax 我自己干自己事情) (XmlHttpRequest) ↑ ↓ ↑ ↓ 页面
二、传统三种方式浏览器向服务器发送请求
1、url 回车 刷新 2、特定元素href或者src 3、表单
三、发送Ajax
// 1. 创建一个 XMLHttpRequest 类型的对象 —— 相当于打开了一个浏览器 var xhr = new XMLHttpRequest() // 2. 打开与一个网址之间的连接 —— 相当于在地址栏输入访问地址 xhr.open('GET', './time.php') // 3. 通过连接发送一次请求 —— 相当于回车或者点击访问发送请求 xhr.send(null) // 4. 指定 xhr 状态变化事件处理函数 —— 相当于处理网页呈现后的操作 xhr.onreadystatechange = function () { // 通过 xhr 的 readyState 判断此次请求的响应是否接收完成 if (this.readyState === 4) { // 通过 xhr 的 responseText 获取到响应的响应体 console.log(this) } }
四、状态码
0:初始化请求代理对象
1:open方法已经调用,建立一个与服务端特定端口的连接
2:已经接受到响应报文的响应头,但拿不到题体
3:正在下载响应报文的响应体,有可能响应体为空,也有可能不完整 // 在这里处理响应体不保险
4: 一切ok 整个响应报文都下载下来
五、请求方法
get方法:通常在一次 GET 请求过程中,参数传递都是通过 URL 地址中的 ? 参数传递。 HTML <ul id="list"></ul> JS var listElement = document.getElementById('list'); var xhr = new XMLHttpRequest(); // 这里任然是使用URL中问号参数传递数据 xhr.open('GET', 'users.php'); xhr.send(null); xhr.onreadystatechange = function () { if (this.readystate != 4) return console.log(this.responseText) var data = JSON.parse(this.responseText) for (var i = 0; i < data.length; i ++) { var liElement = document.createElement('li'); liElement.innerHTML = data[i].name; // 设置每个元素的id liElement.id = data[i].id listElement.appendChild(liElement) listElement.children[i].addEventListener('click', function () { // TODO: 通过ajax操作获取对应的信息 // 如何获取当前被点击元素的ID var xhr1 = new XMLHttpResquest(); xhr1.open('GET', 'users.php?id'+this.id); xhr1.send(null); xhr1.onreadystatechange = function () { if (this,readystate != 4) return; var obj1 = JSON.parse(this.responseText) alert(obj1.age) } }) } } // 给每一个li注册一个点击事件 // 应为li后来动态创建,不能在这里动态生成 应该移上面 // for (var i = 0; i < listElement.children.length; i ++) { // listElement.children[i].addEventListener('click', function () { // console.log(11) // }) //} Post方法:请求过程中,都是采用请求体承载需要提交的数据。 JS var btn = document.getElementById('btn'); var txtUsername = document.getElementById('username'); var txtPassword = document,getElementById('password') btn.onclick = function () { var username = txtUsername.value; var password = txtPassword .value; var xhr = new, XMLHttpRequest(); xhr.open('POST', 'login.php'); // !!!! 一定要注意 如果请求是post请求 urlencoded 格式 必须设置请求头 xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') // 字符串拼接 // xhr.send('username=' + username + '&password=' + password) // 模板字符串 xhr.send(`username=${username}&password=${password}`); xhr.onreadystatechange = function () { if ( this.readystate != 4) return; console.log(this.responseText) } }