js跨域请求数据实现
2011-03-23 14:50
477 查看
第一步,设置需要被跨域调用的页面kuayu.htm,具体内容如下:
/**
* 跨域请求数据,使用iframe.contentWindow.name属性,
* 本域名下还需要提供一个空白页面地址.
*
* 该方法获取数据是安全的,一旦从iframe.contentWindow.name获得数据,
* 就立马删除iframe,防止数据泄露.
*
* 理论上讲iframe.contentWindow.name可以存储任意字节的数据.
*/
function requestForCrossDomain(oParam) {
var oFrame = document.createElement("iframe");
oFrame.style.width = "0px";
oFrame.style.height = "0px";
oFrame.style.border = "none";
oFrame.style.overflow = "hidden";
var isValid = 0;
var handler = function() {
if (!isValid) {
isValid = 1;
// 注意:这里使用location.href,不是this.src
this.contentWindow.location.href = oParam.blankPage;
}
else {
var rs = this.contentWindow.name;
this.onload = null;
this.onreadystatechange = null;
this.parentNode.removeChild(this);
oParam.callback(rs);
}
};
oFrame.onload = handler;
oFrame.onreadystatechange = function() {
if (this.readyState === "complete") {
handler.call(this);
}
};
oFrame.src = oParam.url;
document.body.appendChild(oFrame);
};
第三步,在根目录中加入一个blank.htm页面,供跨域代码初始化时调用(只做为一个过度)
第四步,在具体的页面中去调用如下的js代码, 即可获取跨域数据
<script language="javascript">
requestForCrossDomain({
url: "http://xxx.xxx.xxx/kuayu.htm?_=" + (new Date()).getTime(),
blankPage: "blank.htm",
callback: function(rs) {
if (!rs) return;
alert(rs);
});
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |
<html xmlns="http://www.w3.org/1999/xhtml"> | |
<head> | |
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> | |
<title></title> | |
<script type="text/javascript"> | |
window.name = "这里存放要被获取的跨域数据!"; | |
</script> | |
</head> | |
<body> | |
</body> | |
</html> 第二部在调用方加入如入js文件 |
* 跨域请求数据,使用iframe.contentWindow.name属性,
* 本域名下还需要提供一个空白页面地址.
*
* 该方法获取数据是安全的,一旦从iframe.contentWindow.name获得数据,
* 就立马删除iframe,防止数据泄露.
*
* 理论上讲iframe.contentWindow.name可以存储任意字节的数据.
*/
function requestForCrossDomain(oParam) {
var oFrame = document.createElement("iframe");
oFrame.style.width = "0px";
oFrame.style.height = "0px";
oFrame.style.border = "none";
oFrame.style.overflow = "hidden";
var isValid = 0;
var handler = function() {
if (!isValid) {
isValid = 1;
// 注意:这里使用location.href,不是this.src
this.contentWindow.location.href = oParam.blankPage;
}
else {
var rs = this.contentWindow.name;
this.onload = null;
this.onreadystatechange = null;
this.parentNode.removeChild(this);
oParam.callback(rs);
}
};
oFrame.onload = handler;
oFrame.onreadystatechange = function() {
if (this.readyState === "complete") {
handler.call(this);
}
};
oFrame.src = oParam.url;
document.body.appendChild(oFrame);
};
第三步,在根目录中加入一个blank.htm页面,供跨域代码初始化时调用(只做为一个过度)
第四步,在具体的页面中去调用如下的js代码, 即可获取跨域数据
<script language="javascript">
requestForCrossDomain({
url: "http://xxx.xxx.xxx/kuayu.htm?_=" + (new Date()).getTime(),
blankPage: "blank.htm",
callback: function(rs) {
if (!rs) return;
alert(rs);
});
</script>
相关文章推荐
- 为什么返回的数据前面有callback? ashx/json.ashx?的后面加 callback=? 起什么作用 js url?callback=xxx xxx的介绍 ajax 跨域请求时url参数添加callback=?会实现跨域问题
- 利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据
- 关于试用jquery的jsonp实现ajax跨域请求数据的问题
- Vue.js——基于$.ajax实现数据的跨域增删查改【4】
- cocos2d-js跨域访问问题,cocos2d-js请求网络数据
- 用jQuery AJAX发出JSONP请求实现跨域获取数据
- jQuery实现ajax跨域请求XML数据 并解析XML元素
- 基于iframe实现ajax跨域请求 获取网页中ajax数据
- JS实现跨域请求
- 利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据
- 解决ajax、js无法跨域向服务器请求数据的问题
- jsonp跨域请求数据实现手机号码查询实例分析
- ionic+nodejs开发遇到的跨域和post请求数据问题
- 利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据
- Vue.js——基于$.ajax实现数据的跨域增删查改
- js判断请求的url是否可访问,支持跨域判断的实现方法
- JS-封装函数getValue(key),实现获取请求数据中的value值
- js跨域取数据功能的实现
- Vue.js实现跨域请求
- 利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据