zoukankan      html  css  js  c++  java
  • javascript 不用ajax 用 iframe 子域名下做到ajax post数据

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

    //a.html  

      1 <!DOCTYPE html>
      2 <html>
      3     <head>
      4         <meta charset="utf-8">
      5         <title></title>
      6     </head>
      7     <body>    
      8         
      9 <script type="text/javascript" charset="utf-8">
     10           var Ajax    =    {    
     11             idf    :    "STONE",
     12             frm:null,
     13             ifm:null,
     14             attribute:{
     15                 url:null,
     16                 type:"post",
     17                 data:null,
     18                 success:'Ajax.defaultFunction',
     19                 beforeSend:null,
     20                 jsonp: "callbackparam"
     21             },            
     22             //跨域
     23             init:function(){
     24                 //创建iframe元素
     25                 this.ifm    =    this.createDOM("iframe",{
     26                         name:"iframe"+this.idf,
     27                         id:"iframe"+this.idf,
     28                         style:"display:none",
     29                         1,
     30                         height:1
     31                 });                
     32                 //创建form元素
     33                 this.frm     =    this.createDOM("form",{
     34                         action:this.attribute.url,
     35                         method:this.attribute.type,
     36                         id:"FORM"+this.idf,
     37                         name:"FORM"+this.idf,
     38                         target:"iframe"+this.idf
     39                 });
     40                 document.body.appendChild(this.frm);    
     41                 document.body.appendChild(this.ifm);            
     42                 //回调    callbackparam        
     43                 this.frm.appendChild( this.createDOM("input",{
     44                             type:'hidden',
     45                             name:this.attribute.jsonp,
     46                             value:this.attribute.success
     47                         }) );
     48                 //参数 input
     49                 this.initInput();
     50                 
     51                 this.frm.submit();
     52                 //alert(1);
     53             },
     54             //参数
     55             initInput:function(data , inputname){
     56                 
     57                 //判断initIuput是否是第一次
     58                 if(typeof data != "object"){
     59                     data    =    this.attribute.data;
     60                 }        
     61                 for(i in data){
     62                     var iname    =    inputname ? inputname + "["+i+"]" : i;
     63                     
     64                     if(typeof data[i] == "object"){
     65                         this.initInput(data[i], iname);
     66                     }else{
     67                          this.frm.appendChild( this.createDOM("input",{
     68                             type:'hidden',
     69                             name:iname,
     70                             value:data[i]
     71                         }) );
     72                     }
     73                 }
     74             
     75             },            
     76             
     77             //创建DOM
     78             createDOM:function(Element , data){
     79                  var e = document.createElement(Element);
     80                  for(i in data){
     81                      e.setAttribute(i,data[i]);             
     82                  }
     83                  return e;
     84             },
     85             //默认返回处理函数
     86             defaultFunction:function(){
     87                 console.log("不错!
    可以去搞基!");
     88             },
     89             //清除残留
     90             del:function(){                        
     91                 //document.body.removeAttribute(Ajax.frm);    
     92                 //console.log(this);
     93                 //提交后的回调
     94             },
     95             //合并对象
     96             extend:function(o,n,override){
     97                for(var p in n){
     98                        if(n.hasOwnProperty(p) && (!o.hasOwnProperty(p) || override)){
     99                            o[p]=n[p];
    100                        }
    101                    }
    102             },
    103            call:function(option){
    104                    //赋值
    105                 this.extend(this.attribute , option , true);
    106                 //提交
    107                 
    108                 this.init();    
    109                 
    110                 this.ifm.onload    =    this.del;
    111            }
    112               
    113         }
    114           //使用
    115           //如果是跨域请记得把 document.domain    设成一样
    116         document.domain     =    "xx.com";  
    117         Ajax.call({
    118             url:'iframe.html', 
    119             type:'post',
    120             data:{ddd:"a",a:{b:2,c:{l:0}}}
    121             });
    122         </script>
    123     </body>
    124 </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>

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

  • 相关阅读:
    DPDK安装方法 17.12.13
    numa.h:No such file or directory 解决方法
    17秋 软件工程 第六次作业 Beta冲刺 Scrum3
    17秋 软件工程 第六次作业 Beta冲刺 总结博客
    17秋 软件工程 第六次作业 Beta冲刺 Scrum2
    Paper Reviews and Presentations
    17秋 软件工程 第六次作业 Beta冲刺 Scrum1
    17秋 软件工程 第六次作业 Beta冲刺
    error: could not create '/System/Library/Frameworks/Python.framework/Versions/2.7/share': Operation not permitted
    17秋 软件工程 个人作业 软件产品案例分析
  • 原文地址:https://www.cnblogs.com/Tourmaline/p/javascript.html
Copyright © 2011-2022 走看看