用document.domain完美解决Ajax跨子域 (转)
利用Ajax跨域加载的内容是位于work.js8.in域名下的helloworld.txt。我们需要在主页面中设置document.domain为js8.in,然后主页面添加一个iframe,src为域名work.js8.in下的一个url,在iframe页面中同样设置document.domain为js8.in,同时iframe中需要添加Ajax的函数,例如引入jQuery.js。
一,自己的页面http://www.js8.in/mywork/crossdomain/index.html(域为www.js8.in)代码如下
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>用document.domain+iframe实现Ajax跨子域</title>
</head>
<body>
<div id="ajax">跨域成功此处内容被替换</div>
<iframe src="http://work.js8.in/crossdomain/iframe.html" id="iframe" style="display:none;"></iframe>
<script type="text/javascript">
document.domain = 'js8.in';
function crossDomain(){
var iframe=document.getElementByIdx_x('iframe').contentWindow.$;
iframe.get("http://work.js8.in/crossdomain/helloworld.txt",function(data){
document.getElementByIdx_x("ajax").innerHTML=data;
});
}
</script>
</body>
</html>
二:另外个域下的文件,也就是iframe中src的文件http://work.js8.in/crossdomain/iframe.html(域为work.js8.in),代码如下
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>用document.domain+iframe实现Ajax跨子域</title>
</head>
<script type="text/javascript" src="../public/jquery1.4.js"></script>
<script type="text/javascript">
document.domain = 'js8.in';
</script>
<body>
</body>
</html>
三:数据文件http://work.js8.in/crossdomain/helloworld.txt内容为
hello,world; From "work.js8.in";
点击之前与之后的结果如下
posted on 2015-07-31 11:29 huangfenggu 阅读(3588) 评论(0) 编辑 收藏 举报