// 实例化ajax请求
const xhr = new XMLHttpRequest()
// open 创建请求第一个参数是请求方式,第二个是请求地址,第三个参数是是否异步
xhr.open('GET',"/api",false)
xhr.setRequestHeader('')设置请求头
xhr.send() //发送请求 参数:body 要发送的数据(字符串类型)
xhr.onreadystatechange = function(){ //存储函数,当readyState (0-4)改变时,就会触发 onreadystatechange 函数
if(xhr.readyState == 4){ readyState == 4 表示成功
if(xhr.status == 200){ status 请回返回的状态码
//注:常用200:代表服务器成功接受了客户端请求
// 404:客户端错误,例如请求页面不存在
alert(xhr.responseText)
}
}
}
使用ajax 请求,可以让我们在不刷新页面的情况下,更新页面数据,可以用来实现
- 页面上拉加载更多数据
- 列表数据无刷新分页
- 表单项离开焦点数据验证
- 搜索框提示文字下拉列表
等功能
使用ajax发送请求会让从服务器到浏览器的数据开始变得可控
跨域
同源策略是浏览器需要遵循的标准,而如果是服务器向服务器请求就无需遵循同源策略。
非同源限制
【1】无法读取非同源网页的 Cookie、LocalStorage 和 IndexedDB(已淘汰)
【2】无法接触非同源网页的 DOM
【3】无法向非同源地址发送 AJAX 请求
简单实现跨域的方法有通过jsonp 的方式
核心思想:网页通过添加一个******元素***,向服务器请求 JSON 数据,服务器收到请求后,将数据放在一个指定名字的回调函数的参数位置传回来。JSONP只支持GET******请求,CORS支持所有类型的HTTP请求。JSONP的优势在于支持老式浏览器,以及可以向不支持CORS的网站请求数据。
也可以通过设置请求头
在 xhr.setRequestHeader()中添加
Access-Control-Allow-Origin
必传,值要么是请求时Origin字段的值,要么是一个*,表示接受任意域名的请求
附:具体请求头的设置可以参考这篇博客
链接: https://blog.csdn.net/adfgcxe/article/details/113928937.