框架结构解析
框架结构的解析
|
|
|
|
在说跨域这个问题之前我什么需要了解什么是 同源
同源策略是浏览器的一种安全策略,所谓同源是指,域名,协议,端口完全相同。
不同源则跨域
我们来举一个例子
code block
具体的实现
因为是同域名:协议,端口,域名相同的情况下,我是可以去访问
另一个页面中的里面的资源
|
|
JSON with Padding
原理剖析
其本质是利用了和link标签页
是可以用来访问另一个网站的样式.
标签具有可跨域的特性,由服务端 返回一个预先定义好的Javascript函数的调用,并且将服务器数据以该函数参数的形式传递过来,此方法需要前后端配合完成。
具体的实现
|
|
jQuery 的$.ajax()方法
当中集成了JSONP的实现,可以非常方便的实现跨域数据的访问。
dataType: ‘jsonp’ 设置dataType值为jsonp即开启跨域访问
jsonp 可以指定服务端接收的参数的“key”值,默认为callback
jsonpCallback 可以指定相应的回调函数,默认自动生成
实现不从缓存中读取数据:本代码端中的最后几行注释中就有说明这个问题
$getScript(url,function(){})
|
|
$.ajax
|
|
getJSON
|
|
其他的在这里就不多说了自行查阅W3C文档
即Asynchronous Javascript And XML,AJAX.不是一门语言,而是对现有持术的综合利用。
本质是在HTTP协议的基础上以异步的方式与服务器进行通信。
不管是同步交互,还是异步交互,只是跟服务器请求的一种方式,交换数据的一种方式。
那么我们先说最实用的东西,然后在对知识升华一下
XMLHttpRequest 对象是 AJAX 的关键。说白ajax主要的就是这个内容
|
|
|
|
第三步:我们需要发送数据给服务器,我们应该调用xhr提供的send 方法.
如果不需要发送数据,我们这个方法也不能省略,我们可以传递一个null过去
以为是get方式的话这个地方的内容是为空的,如果是post的话方法就不一样这里头的就是数据的内容,POST还得加一个请求头
|
|
|
|
封装带一个对象上思想上跟jq是很像的:
|
|
调用:
|
|
|
|
注意:我们在open的方法中如果最后一个参数为false一定要记住要send方法放到最后一步去执行,因为我们false的是同步处理,那就一定要等当 readyState 等于 4 且状态为 200时,表示响应已就绪:
这个方法导致一个 HTTP 请求发送。如果之前没有调用 open(),或者更具体地说,如果 readyState 不是 1,send() 抛出一个异常。否则,它发送一个 HTTP 请求,该请求由以下几部分组成:
之前调用 open() 时指定的 HTTP 方法、URL 以及认证资格(如果有的话)。
之前调用 setRequestHeader() 时指定的请求头部(如果有的话)。
传递给这个方法的 body 参数。
一旦请求发布了,send() 把 readyState 设置为 2,并触发 onreadystatechange 事件句柄。
如果之前调用的 open() 参数 async 为 false,这个方法会阻塞并不会返回,直到 readyState 为 4 并且服务器的响应被完全接收。否则,如果 async 参数为 true,或者这个参数省略了,send() 立即返回,并且正如后面所介绍的,服务器响应将在一个后台线程中处理。
如果服务器响应带有一个 HTTP 重定向,send() 方法或后台线程自动遵从重定向。当所有的 HTTP 响应头部已经接收,send() 或后台线程把 readyState 设置为 3 并触发 onreadystatechange 事件句柄。如果响应较长,send() 或后台线程可能在状态 3 中触发 onreadystatechange 事件句柄:这可以作为一个下载进度指示器。最后,当响应完成,send() 或后台线程把 readyState 设置为 4,并最后一次触发事件句柄。
++其他方法的调用时候的 readyState 的值是不一样的,详细查看W3C文档++