博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AJAX是什么? AJAX的交互模型(流程)?同步和异步的区别? AJAX跨域的解决办法?
阅读量:5942 次
发布时间:2019-06-19

本文共 2305 字,大约阅读时间需要 7 分钟。

AJAX是什么? AJAX的交互模型(流程)?同步和异步的区别? AJAX跨域的解决办法?

什么是ajax:是异步javascript和xml
ajax是用于创建快速网页技术
通过在后台和服务器金星号少量数据交互,通过异步更新,实现页面的局部更新
同步:等待页面回复完再继续
异步:页面继续与进程处理可能的回复
交换流程
1,创建xhr
2,open打开异步通道,设置异步请求true为异步请求
3,send发送数据
4,判断readystate==4;HTTP请求在200,300之间或者304数据请求成功
跨域技术
什么是跨域
可以通信:同一域名,同一域名下的不同文件
可以不通信:1,同一域名,不同端口
2,同一域名,不同协议。
3,域名和域名对应的ip
4,http://www.a.com/a.js
http://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域下的代理iframe

4,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);

转载于:https://www.cnblogs.com/yayaxuping/p/4433050.html

你可能感兴趣的文章
markdown语法
查看>>
oracle11g dataguard 完全手册
查看>>
关系模式数据库设计范式深入浅出
查看>>
打油诗 现代教育经济学
查看>>
隐马尔科夫模型(Hidden Markov Models) 系列之二
查看>>
OpenXml操作Word的一些操作总结.无word组件生成word.
查看>>
WPF模板
查看>>
java.lang.ClassCastException: sun.proxy.$Proxy11 cannot be cast to分析
查看>>
加载ConversationListActivity以及延迟的使用
查看>>
Extjs4.2 Grid搜索Ext.ux.grid.feature.Searching的使用
查看>>
GTK、KDE、Gnome、XWindows 图形界面
查看>>
hdu1231-最大连续子序列
查看>>
TMG阵列部署选择
查看>>
Repeater 控件 当数据源没有数据的时候显示 暂无数据 的两种方式
查看>>
大型网站的架构设计图分享-转
查看>>
Lambda应用设计模式
查看>>
const成员函数
查看>>
9.15游戏化体验的原则初探
查看>>
(function(){...}())与(function(){...})()
查看>>
css实现气泡框效果
查看>>