js面试之ajax

214 阅读2分钟

这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战

Json格式的数据与对象字面量的区别

  • json格式的数据,属性必须添加引号
  • json格式的数据最后不需要添加;
  • 不需要存储在变量中

Ajax基础和手写封装Ajax函数

ES5新增了JSON对象

  • json对象的parse方法
  • json对象的stringify方法

完整的ajax请求包含5个步骤

  • 创建XMLHTTPRequest对象
  • 使用open方法创建http请求,并设置请求地址
// 经常使用前三个参数
xhr.open(get/post/put/delete, url, async:true(异步,默认)、false(同步))
  • 设置请求头
xhr.setRequestHeader("content-type","application/x-www-form-urlencoded")
  • 设置发送的数据,用send发送请求
xhr.send(data)
  • 注册事件(给ajax设置事件)获得响应并更新页面
// 指定xhr状态变化事件处理函数
xhr.onReadyStateChange = function ({
  if (this.readyState === 4) {
    //响应体下载完成,可以直接使用`responseText`
  }
})

jsnullundefined的区别

  • 相同点:用if判断时,两者都会被转换成false
  • 不同点:number转换的值不同,number(null)0number(undefined)NaN
  • Null表示:值被定义了,但是这是个空值
  • undefined表示:变量声明但未赋值

跨域

  • 一个域名的组成:
    • 协议(http://)子域名(www).主域名(abc.com):端口号(8080)/ 请求资源地址(scripts/jquery.js)
  • 当协议、子域名、主域名、端口号中任意一个不相同时,都算作不同域。不同域之间相互请求资源,就算做“跨域”

websocket

  • websocket是一个持久化的协议,相对于HTTP非持久的协议来说。
  • websocket API最伟大之处在于:服务器和客户端可以在给定的时间范围内的任意时刻,相互推送信息。
  • websocket并不限于以ajax(或XHR)方式通信,因为Ajax技术需要客户端发起请求,而websocket服务器和客户端可以彼此相互推送信息;XHR受到域的限制,而websocket允许跨域通信

GETPOSTPUTDELETE

  • GET请求
    • 从数据库中获取信息,只是用来查询数据,不会修改。
    • 使用URLcookie传参
    • 提交的数据有长度限制,一般在2000字符
    • 安全性低,数据在地址栏上可见
  • POST请求
    • 向数据库发送数据,会改变数据的种类等资源,就像insert操作
    • 大小一般没有限制
    • POST安全性高,不会缓存
  • PUT请求
    • 像数据库的update操作,用来修改数据内容,不会增加数据种类
  • Delete请求
    • 删除操作