Ajax过程
(1)创建XMLHttpRequest对象,也就是创建一个异步调用对象.
(2)创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息.
(3)设置响应HTTP请求状态变化的函数.
(4)发送HTTP请求.
(5)获取异步调用返回的数据.
(6)使用JavaScript和DOM实现局部刷新.
原生的ajax请求的数据格式
get: QueryString
post:
Request Payload 默认
Form Data
通过
xhr.setRequestHeader(“Content-Type”,”application/x-www-form-urlencoded”);
可以把格式修改为Form Data
异步加载和延迟加载
1.异步加载的方案: 动态插入script标签
2.通过ajax去获取js代码,然后通过eval执行
3.script标签上添加defer或者async属性
4.创建并插入iframe,让它异步执行js
5.延迟加载:有些 js 代码并不是页面初始化的时候就立刻需要的,而稍后的某些情况才需要的。
请解释一下 JavaScript 的同源策略。
概念:同源策略是客户端脚本(尤其是Javascript)的重要的安全度量标准。它最早出自Netscape Navigator2.0,其目的是防止某个文档或脚本从多个不同源装载。
这里的同源策略指的是:协议,域名,端口相同,同源策略是一种安全协议。 指一段脚本只能读取来自同一来源的窗口和文档的属性。
为什么要有同源限制?
我们举例说明:比如一个黑客程序,他利用Iframe把真正的银行登录页面嵌到他的页面上,当你使用真实的用户名,密码登录时,他的页面就可以通过Javascript读取到你的表单中input中的内容,这样用户名,密码就轻松到手了。
GET和POST的区别,何时使用POST?
GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符
POST:一般用于修改服务器上的资源,对所发送的信息没有限制。
GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值,也就是说Get是通过地址栏来传值,而Post是通过提交表单来传值。
然而,在以下情况中,请使用 POST 请求:
无法使用缓存文件(更新服务器上的文件或数据库)
向服务器发送大量数据(POST 没有数据量限制)
发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
eval是做什么的?
它的功能是把对应的字符串解析成JS代码并运行;
应该避免使用eval,不安全,非常耗性能(2次,一次解析成js语句,一次执行)。
ajax 是什么?ajax 的交互模型?同步和异步的区别?如何解决跨域问题?
- 通过异步模式,提升了用户体验
- 优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用
- Ajax在客户端运行,承担了一部分本来由服务器承担的工作,减少了大用户量下的服务器负载。
Ajax的最大的特点是什么。
- Ajax可以实现动态不刷新(局部刷新)
- readyState属性 状态 有5个可取值: 0=未初始化 ,1=启动 2=发送,3=接收,4=完成
ajax的缺点
|
|
|
|
|
|
|
|
|
|
AMD和CMD 规范的区别
|
|
|
|
HTTP状态码
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
栈和队列的区别?
|
|
|
|
|
|
|
|
XML和JSON的区别?
|
|
一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?
|
|
|
|
|
|
|
|
|
|
ajax加载的页面,跳转到另外一个页面再跳转回来,内容相同,如何节约读取请求?
|
|
跨域访问
跨域访问.
以ajax发起跨域请求,浏览器是不允许的. ajax只能向同源资源发起请求.如何实现跨域请求.
1- ajax无论如何是不行的.1- script标签.123456789101112CDN. 内容分发网络.网站引入的js文件是很多的.大多数都是一些第三方库.jqbotsang如果把这些文件都放在自己的服务器上 无疑会增大服务器的压力.怎么办?有一些好心的机构。他们自己搭建搭建了一些服务器. 在他们的服务器上放了一些常用的库.CDN.- script的src属性是天然支持跨域的.
实现
- script标签将src指向的js文件请求过来以后 他会将其执行一次.
- src属性可以请求任意格式的文件.
无论是什么文件 请求过来的数据 都会当做js代码执行一次. - 利用script的src属性来实现跨域请求 - jsonp
- 3.1 准备1个函数 这个函数至少带1个参数.
- 3.2 创建1个script标签.
利用src属性发起跨域请求.将函数名称发给服务器. - 3.3 服务器:
处理数据.
去除浏览器发给我的函数的名称.
返回: 函数名称(真正的数据) - 3.4 浏览器拿到返回的数据 就当做js代码执行.
我们事先准备的函数就被执行了.
函数的参数就是服务器真正给我的数据.
|
|