关于ajax
- 可以实现异步通信,页面局部刷新,带来更好的用户体验
- IE低版本中通过
new ActiveXObject()
得到XMLHttpRequest
对象 - ajax将界面和应用分离也就是数据和呈现分离
- ajax渲染的页面对应搜索引擎的支持比较弱,很多搜索引擎不支持js渲染的页面
ajax解决浏览器缓存的方法
- 在
ajax
发送请求前加上anyAjaxObj.setRequestHeader(if-Modified-Since, 0)
- 在
ajax
发送请求前加上anyAjaxObj.setRequestHeader(Cache-control, no-cache)
- 在
URL
后面加上一个随机数:"fresh=" + Math.random()
- 在
URL
后面加上时间戳:"nowtime=" + new Date().getTime()
- 在 jq 下用
$.ajaxSetup({cache: false})
异步加载JS的步骤
- 动态插入
script
标签 - 通过 ajax 去获取 js 代码,然后通过 eval 执行
- script 标签添加上 defer 或者 async 属性
- 创建并插入 iframe, 让它异步执行 js
关于 get 和 post
- get 和 post 在 http 中都可以请求数据,相对来说 get 更简单,快速,效率高
- get 相对 post 安全性低
- get 有缓存, post 没有
- get 的 url 参数可见, post不可见
- get 只接收 ASCII字符的参数数据类型,post 没有限制
- get 请求参数会保留历史记录,post中参数不会保留
- get 体积小,post可以不限大
XMLHttpRequest对象常用方法和属性
send()
发送请求给服务器setRequestHeader()
设置头信息onreadystatechange
用于监听ajax的工作状态status
返回服务器的状态码readyState
返回一个XMLHttpRequest代理所处当前的状态,- 0:UNSENT 代理被创建但未调用open方法
- 1:OPENED open()方法被调用
- 2:HEADERS_RECEIVED send()方法已调用,并且头部和状态已经可获得
- 3:LOADING 下载中;responseText属性已经包含部分数据
- 4:DONE 下载操作已经完成
同源策略
- 同源策略是客户端脚本的安全度量标准,为了防止某个文档或脚本从多个不同源装载
- 是一种安全协议,指一段脚本只能读取来自同一来源的窗口和文档的的属性
- 同源就是同域名,同协议,同端口,只有同源的地址才能相互通过 ajax 的方式请求
解决跨域问题的方式
- JSONP
- 大概就是用
<script>
包裹的东西
- 大概就是用
- CORS方式(跨资源共享),在后端上配置可跨域
- 服务器代理,通过服务器的文件能访问第三资源