AJAX是什么? AJAX的交互模型(流程)?同步和异步的区别? AJAX跨域的解决办法?
什么是ajax:是异步javascript和xml ajax是用于创建快速网页技术 通过在后台和服务器金星号少量数据交互,通过异步更新,实现页面的局部更新 同步:等待页面回复完再继续 异步:页面继续与进程处理可能的回复 交换流程 1,创建xhr 2,open打开异步通道,设置异步请求true为异步请求 3,send发送数据 4,判断readystate==4;HTTP请求在200,300之间或者304数据请求成功 跨域技术 什么是跨域可以通信:同一域名,同一域名下的不同文件可以不通信:1,同一域名,不同端口2,同一域名,不同协议。3,域名和域名对应的ip4,http://www.a.com/a.jshttp://script.a.com/b.js 主域相同,子域不同5,http://www.a.com/a.js http://a.com/b.js 同一域名,不同二级域名(同上)6,http://www.cnblogs.com/a.js http://www.a.com/b.js 不同域名 1.document.domain+iframe的设置(主域相同,子域不相同) wwww.a.com上的a.html document.domain+ifame document.domian='a.com'; var ifr=document.createElement('iframe'); ifr.src='http://script.a.com/b.html'; ifr.style.display='none'; document.body.appendChild(ifr); ifr.οnlοad=function(){ var doc = ifr.contentDocument || ifr.contentWindow.document; // 在这里操纵b.html alert(doc.getElementsByTagName("h1")[0].childNodes[0].nodeValue); } script.a.com上的b.html document.domain='a.com' 2,jsonp(ison+padding)box({name:ve;}),通过回调函数在另一个文件中写函数 function createjs(surl){ var oScript=documnet.createElement('script'); oScript.type='text/javascript'; oScript.src=surl; document.getElementsByTagName('heade')[0].appendChild(oScript); } createjs('jsonp.js?callback=box'); function box(json){ alert(json.name); }1350*3=405 3,location.hash parent.location.hash yyy.html# parent.location.hash=self.location.hash; <iframe src='xxx.php#key1=value1&key2=value2'></iframe> ie、chrome的安全机制无法修改parent.location.hash,要利用一个中间的cnblogs域下的代理iframe4,window.name
name 在浏览器环境中是一个全局/window对象的属性,且当在 frame 中加载新页面时,name 的属性值依旧保持不变。通过在 iframe 中加载一个资源,该目标页面将设置 frame 的 name 属性。此 name 属性值可被获取到,以访问 Web 服务发送的信息。但 name 属性仅对相同域名的 frame 可访问。这意味着为了访问 name 属性,当远程 Web 服务页面被加载后,必须导航 frame 回到原始域。同源策略依旧防止其他 frame 访问 name 属性。一旦 name 属性获得,销毁 frame 有个代理界面 有三个页面页面 1,a.com/app.html;应用页面 2,a.com/proxy.html代理文件 3,b.com/data.html数据页面5,html5 postmessage
a.com/index.html中的代码 <iframe id='ifr' src='b.com/index.html'></iframe>window.οnlοad=function(){ var ifr=document.getElementById('ifr'); var targetOrigin='http://b.com'; ifr.contentWindow.postMessage('i was there',targetOrigin)}b.com/index.html中的代码window.addEventListener('message',function(event){ if(event.origin=='http://a.com'){ alert(event.data); }},false);