ajax面试知识点

1. 手写一个简易的ajax

const xhr = new XMLHttpRequest()
// get请求
xhr.open('GET', '/data/test.json', true)
xhr.onreadystatechange = function () {
    if (xhr.readyState === 4) {
        if (xhr.status === 200) {
            // console.log(
            //     JSON.parse(xhr.responseText)
            // )
            alert(xhr.responseText)
        } else if (xhr.status === 404) {
            console.log('404 not found')
        }
    }
}
xhr.send(null)

// post请求
xhr.open('POST', '/data/test.json', true) // true为异步请求,false为同步请求
xhr.onreadystatechange = function () {
    if (xhr.readyState === 4) {
        if (xhr.status === 200) {
            // console.log(
            //     JSON.parse(xhr.responseText)
            // )
            alert(xhr.responseText)
        } else if (xhr.status === 404) {
            console.log('404 not found')
        }
    }
}
constpostData= { userName: 'zhangsan', password: '123456' }
xhr.send(JSON.stringify(pastData))

2. xhr.readyState

  • 0: (未初始化)还没投调用send()方法
  • 1:(载入)以调用send()方法,正在发送请求
  • 2:(载入完成)send()方法执行完成,已经接收到全部响应内容
  • 3:(交互)正在解析响应内容
  • 4:(完成)响应内容解析完成,可以在客户端调用

3. 跨域

同源策略:

  • ajax请求时,浏览器要求当前网页和server必须同源
  • 同源:协议、域名、端口三者必须一致

加载图片、CSS、JS 可无视同源策略

  • <img/>可用于统计打点,可使用第三方统计服务

  • <link/> <script> 可使用CDN,CDN一般都是外域

  • <script> 可实现JSONP

所有的跨域,都必须经过server端允许和配合

未经server端允许就实现跨域,说明浏览器有漏洞,危险信号

4.JSONP

  • script可以绕过跨域限制
  • 服务器可以任意动态拼接数据返回
  • 所以,script就可以获得跨域的数据,只要服务端愿意返回
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容