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就可以获得跨域的数据,只要服务端愿意返回
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 盒模型: 基本概念:标准模型 + IE模型 标准模型 和 IE模型的区别标准盒模型不包括padding和borde...
    谷子多阅读 3,424评论 1 1
  • Web API DOM 操作 (Documwnt Object Model) 题目六 DOM 是那种基本的数据结构...
    YM雨蒙阅读 2,607评论 0 1
  • 一、第一部分 1.1值类型和引用类型 1.1.1 值类型都是变量,通过在栈中进行存储,值类型在内存中所占的空间小;...
    洛珎阅读 3,878评论 0 1
  • 看了很多 JS 的书籍和教程,往往会模糊焦点,这篇文章会做一个梳理,将 JS 中的重难点进行总结。 文章分为上下两...
    你好星期四阅读 3,169评论 0 0
  • 本文旨在加深对前端知识点的理解,资料来源于网络 position的值, relative和absolute分别是相...
    新晋小牛牛阅读 5,107评论 0 15