码迷,mamicode.com
首页 > Web开发 > 详细

jsonp的封装

时间:2015-02-03 11:00:11      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

(function(root){
    root["jsonp"]=function(o){
        if(typeof(o)!=="object") return;
        var    url=o.url,
            callback=((typeof(o.callback)==="string")&&o.callback)||"callback",
            callbackfn=((typeof(o.callbackfn)==="string")&&o.callbackfn)||("myfn"+parseInt(new Date().getTime()*Math.random())),
            callbackdone=((typeof(o.callbackdone)==="function")&&o.callbackdone)||new Function,
            data=o.data,
            script=document.createElement("script");

        url+=dealData(data);
        url+=(url.indexOf("?")>-1) ? "&" : "?";
        url+=callback+"="+callbackfn+"&_="+new Date().getTime();

        script.src=url;

        root[callbackfn]=function(){
            var arg=arguments;
            if(root.navigator.userAgent.toLowerCase().indexOf("msie")>-1){
                script.onreadystatechange=function(){
                    if(script.readyState=="loaded"||script.readyState=="complete"){
                        callbackdone.apply(null,arg);
                        script.parentNode.removeChild(script);
                    }
                }
            }else{
                script.onload=function(){
                    callbackdone.apply(null,arg);
                    script.parentNode.removeChild(script);
                }
            }
        }
        document.getElementsByTagName("head")[0].appendChild(script);

        function dealData(s){
            if(s==undefined||s==""||s==null) return "";
            if(typeof(s)=="string") return "?"+s;
            if(typeof(s)=="object"){
                var x,newstr="";
                for(var x in s){
                    newstr+= x+"="+s[x]+"&";
                }
                return newstr=="" ? "" : "?"+newstr.substring(0,newstr.lastIndexOf("&"));
            }
        }
    }
})(window)

 

jsonp的封装

标签:

原文地址:http://www.cnblogs.com/anson0415/p/4269307.html

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