码迷,mamicode.com
首页 > 其他好文 > 详细

H5跨域的解决问题!

时间:2015-08-20 15:34:59      阅读:372      评论:0      收藏:0      [点我收藏+]

标签:h5跨域

var HOST = ‘http://hummer.baidu.com‘;

    var autoAjax = function(data){

        if(!data || typeof data != ‘object‘) return;

        var rnd    = new Date().getTime();

        if(!data.proxy) data.proxy = HOST + ‘/static/proxy.html?_=‘+rnd;

        var name    = ‘postIframe‘;

        var proxyhost   = /^((?:[^:\/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?(?:[^#]*))?(?:#(.*))?$/.test(data.proxy);

        proxyhost   = RegExp.$1 + RegExp.$2;

        var _host   = /^((?:[^:\/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?(?:[^#]*))?(?:#(.*))?$/.test(data.url);

        _host = RegExp.$1 + RegExp.$2;

        var _domain = ‘http://‘ + location.host;

        var _back   = function(ret){

            try{

                if(typeof ret === ‘string‘){

                    ret = ret.replace(/^[^{]+/img,‘‘);

                    ret = $.parseJSON(ret);

                }

                if(!!ret.source){

                    ret = ret.data;

                }

                if(typeof ret === ‘string‘) ret = $.parseJSON(ret);

            }catch(_err){

                ret = {success:1,info:‘提交失败‘};

            }

            data.callback(ret);

        };

        if(_domain === _host && _host != ‘‘){

            var _data = {data: data.data};

            var ajax = $.ajax({

                type:‘post‘,

                url: data.url,

                data: data.data

            });

            ajax.always(_back);

        }else{

            var oFrame = $(‘#‘+name);

            if(!!oFrame.length){

                oFrame.attr(‘src‘,data.proxy);

            }else{

                oFrame = $(‘<iframe name="‘+name+‘" id="‘+name+‘" src="‘+data.proxy+‘" style="display:none;"></iframe>‘).appendTo(document.body);

            }

            var msg    = {

                url: data.url,

                data: data.data

            };

            if(typeof msg == ‘object‘){

                msg = JSON.stringify(msg);

            }

            window.onmessage = _back;

            oFrame.unbind(‘load‘).load(function(){

                this.contentWindow.postMessage(msg,HOST);

            });

        }

    }




    var data = {

        url: "http://hummer.baidu.com/api/PharmacyMerhants/getOrderInfo?app_id=5501284&start=20150401&end=20150419&pn=1&ps=20&order=1",

        callback: function(ret){

            /*if(ret && ret.success == 0){

                setCurrentDate();

                createSearchList(ret);

            }else if(ret && ret.success == 2){

                return poplayer({msg: ret.info,icon:‘error‘,after:function(){

                    location.href = (ret.login_url || API.login);

                }});

            }else{

                return poplayer({msg: (ret ? ret.info : ‘获取查询列表失败‘),icon:‘error‘});

            }*/

            console.log(ret);

        }

    };

    autoAjax(data);


H5跨域的解决问题!

标签:h5跨域

原文地址:http://tianbin.blog.51cto.com/10559580/1686339

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!