早年我常常在博客说JSONP,譬喻我的WordPress气候插件就是通过JSONP来挪用的气候数据,本日就说说通过JSONP实现跨域的应用~
什么是JSONP JSONP即JSON with Padding。因为同源计策的限定,XmlHttpRequest只应承哀求当前源(域名、协议、端口)的资源。假如要举办跨域哀求,我们可以通过行使 html的script标志来举办跨域哀求,并在相应中返回要执行的script代码,个中可以直接行使JSON转达javascript工具。这种跨域的通信方法称为JSONP。
对付上面的表明,我们可以简朴这样领略:JSONP就是可以通过JavaScript文件举办跨域通信的方法,譬喻:此刻各大网站风靡的搜刮提醒,搜狗云输入法 留意:JSONP处事器端代码必要充实做好安详法子。
最简朴的JSONP var JSONP = document.createElement("script") ; //FF:onload IE:onreadystatechange JSONP.onload = JSONP.onreadystatechange = function(){ //onreadystatechange,仅IE if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") { alert($("#demo").html()); JSONP.onload = JSONP.onreadystatechange = null//请内存,防备IE memory leaks } } JSONP.type = "text/javascript"; JSONP.src = "http://a.pojaaimg.cn/2010/js/jquery.js"; //在head之后添加js文件 document.getElementsByTagName("head")[0].appendChild(JSONP); 简朴表明:我们通过建设script,然后指定它的src等属性,然后插入到head执行 提议:onload、onreadystatechange 写在src赋值之前,防备载入js太快而没有给onload、onreadystatechange 赋值(Image工具在IE下具有此类征象)
JSONP实例 我们可以起首界说一个函数来执行JSONP返回的数据,然后通过JSONP的src传此函数给靠山,举办处理赏罚,返回可执行的函数。譬喻下面代码:
function jsonpHandle(a){ alert(a); } var JSONP = document.createElement("script") ; JSONP.type = "text/javascript"; JSONP.src = "http://www.js8.in/jsonp.php?callback=jsonpHandle"; //在head之后添加js文件 document.getElementsByTagName("head")[0].appendChild(JSONP); 靠山jsonp.php的代码:
echo $_GET["callback"]."('hello,world')";
出处:http://www.js8.in/548.html (编辑:河北网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|