最近在一个项目中遇到了ajax跨域的问题,情况如下。有三个域名分别是 a.xx.com b.xx.com c.xx.com 这三个域名都会用用ajax post方式相互读取数据。文笔不好, 不写了妈蛋。自己去看

//a.html

 <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body> <script type="text/javascript" charset="utf-8">
var Ajax = {
idf : "STONE",
frm:null,
ifm:null,
attribute:{
url:null,
type:"post",
data:null,
success:'Ajax.defaultFunction',
beforeSend:null,
jsonp: "callbackparam"
},
//跨域
init:function(){
//创建iframe元素
this.ifm = this.createDOM("iframe",{
name:"iframe"+this.idf,
id:"iframe"+this.idf,
style:"display:none",
width:1,
height:1
});
//创建form元素
this.frm = this.createDOM("form",{
action:this.attribute.url,
method:this.attribute.type,
id:"FORM"+this.idf,
name:"FORM"+this.idf,
target:"iframe"+this.idf
});
document.body.appendChild(this.frm);
document.body.appendChild(this.ifm);
//回调 callbackparam
this.frm.appendChild( this.createDOM("input",{
type:'hidden',
name:this.attribute.jsonp,
value:this.attribute.success
}) );
//参数 input
this.initInput(); this.frm.submit();
//alert(1);
},
//参数
initInput:function(data , inputname){ //判断initIuput是否是第一次
if(typeof data != "object"){
data = this.attribute.data;
}
for(i in data){
var iname = inputname ? inputname + "["+i+"]" : i; if(typeof data[i] == "object"){
this.initInput(data[i], iname);
}else{
this.frm.appendChild( this.createDOM("input",{
type:'hidden',
name:iname,
value:data[i]
}) );
}
} }, //创建DOM
createDOM:function(Element , data){
var e = document.createElement(Element);
for(i in data){
e.setAttribute(i,data[i]);
}
return e;
},
//默认返回处理函数
defaultFunction:function(){
console.log("不错!\n可以去搞基!");
},
//清除残留
del:function(){
//document.body.removeAttribute(Ajax.frm);
//console.log(this);
//提交后的回调
},
//合并对象
extend:function(o,n,override){
for(var p in n){
if(n.hasOwnProperty(p) && (!o.hasOwnProperty(p) || override)){
o[p]=n[p];
}
}
},
call:function(option){
//赋值
this.extend(this.attribute , option , true);
//提交 this.init(); this.ifm.onload = this.del;
} }
//使用
//如果是跨域请记得把 document.domain 设成一样
document.domain = "xx.com";
Ajax.call({
url:'iframe.html',
type:'post',
data:{ddd:"a",a:{b:2,c:{l:0}}}
});
</script>
</body>
</html>

iframe.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript" charset="utf-8">
document.domain = "xx.com";
parent.Ajax.defaultFunction()
</script>
</body>
</html>

现在只可以在子域名下跳跳,哪位大神有兴趣可以改成无限制跨域

javascript 不用ajax 用 iframe 子域名下做到ajax post数据的更多相关文章

  1. 《JavaScript》高级程序设计第21章:Ajax和Comet,jsonp

    一.创建XMLHttpRequest对象 二.XHR的用法 五.跨域资源共享 六.其他跨域技术七.安全七.安全 1. 图像Ping 2. JSONP(JSON with padding,填充式JSON ...

  2. div中加入iframe,可以实现Ajax的功能

    div中加入iframe,可以实现Ajax的功能,如果查询的时候,比如说城市的选择,用Ajax去实现, 在.net 可以考虑用UpdatePanel,但是点击了查询刷新表格(表格需要重新刷新加载,非纯 ...

  3. JavaScript学习总结【12】、JS AJAX应用

    1.AJAX 简介 AJAX(音译为:阿贾克斯) = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技 ...

  4. 第二百七十二节,Tornado框架-iframe标签框架伪造ajax

    Tornado框架-iframe标签框架伪造ajax html <!DOCTYPE html> <html> <head lang="en"> ...

  5. javascript AJAX简单原理及什么是ajax

    AJAX简单原理供初学者理解 AJAX的原理: Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其 ...

  6. 使用document.domain和iframe实现站内AJAX跨域

    站内AJAX跨域可以通过document.domain和iframe实现,比如www.css88.com.js.css88.com.css88.com这3个域名其实是3个不同的域,很多时候www.cs ...

  7. 使用ajax与iframe嵌套实现页面局部刷新

    使用ajax与iframe嵌套实现页面局部刷新.该javascript代码仅供参考,需按自己需要修改.​1. [代码]javascript代码 function cj_start(depname,gr ...

  8. Ajax加载子域跨站cookie丢失的问题.

    我们有两个网站一个是main.xxx.cn 一个是 preveiw.xxx.cn main.xxx.cn 页面需要加载preview.xxx.cn的内容. 项目里面出现了两种的加载preview.xx ...

  9. 使用ajax代替iframe

    相信大多数程序员都跟iframe打过交道,iframe简单,好用.在我用的过程中比较苦逼的是关于iframe高度的设置. 由于子页面内容不确定,页面高度也不确定.于是开始网上的各种搜索,一般有两种:一 ...

随机推荐

  1. cloudstack的ZONE删除不掉?来这招吧

    老是提示什么物理网络被使用之类的, 可以进数据库去直接删除. I want to delete a zone,by this way:(1)delete all VMs in zone.(2)dele ...

  2. 对LockWindowUpdate与GetDCEx的理解(以前不知道还可以锁住刷新)

    MSDN如是说:The LockWindowUpdate function disables or enables drawing in the specified window. Only one  ...

  3. 【最短路】Vijos P1046 观光旅游

    题目链接: https://vijos.org/p/1046 题目大意: 给n个点(n<=100),m条无向边(m<=10000),问这张图的最小环长度. (注意:无自环,同一个点对之间的 ...

  4. Understanding the Android Life Cycle

    Problem Android apps do not have a “main” method; you need to learn how they get started and how the ...

  5. 《SDN核心技术剖析和实战指南》2.3 OF-CONFIG配置管理协议小结

    OpenFlow协议定义了交换机和控制器交换数据的方式和规范,但并没有定义如何配置和管理必需的网络参数和网络资源,OF-CONFIG的提出就是为了对OpenFlow提供配置管理支持.如下图所示,OF- ...

  6. Ubuntu输入密码之后,桌面闪一下黑屏,然后又返回到输入密码界面。但是其他账户可以登入

    1)原因:主目录下的.Xauthority文件拥有者变成了root,从而以用户登陆的时候无法都取.Xauthority文件 说明:Xauthority,是startx脚本记录文件.Xserver启动时 ...

  7. oracle查询和断开用户session

    select sid,serial#,username from v$session where username='user_name';alter system kill session 'sid ...

  8. 设计模式19---设计模式之状态模式(State)(行为型)

    1.场景模拟 考虑一个在线投票的应用,分为四种情况 正常投票 正常投票以后还继续重复投票 用户恶意投票 黑名单用户 2.不用模式的解决方案 package demo17.state.example1; ...

  9. 查询表达式Linq

    LINQ简介 OO(面向对象)以外的疆域:信息的访问与整合.关系数据库与XML为其中的典型应用. .net Language Integrated Query(Linq):不采用特定关于数据库与XML ...

  10. 使用solr报错,错误信息 include(SolrClient.php): failed to open stream: No such file or directory

    这个是因为本地没有安装php-solr的扩展导致的,安装方法(使用的是ubuntu) cd /optwget http://pecl.php.net/get/solr-1.0.2.tgztar -xv ...