各种封装——封装jsonp

jsonp主要用于跨域进行数据的交互

function json2url(json)
{
    json.t=Math.random();
    var arr=[];
    for(var name in json)
    {
        arr.push(name+'='+json[name]);
    }
    return arr.join('&');
}
function jsonp(json)
{
    json=json||{};
    if(!('url') in json) return;
    var url=json.url;
    var cbName=json.cbName||'cb';
    var data=json.data||{};
    
    var fnName='jsonp'+Math.random();
    fnName=fnName.replace('.','');
    data[cbName]=fnName;
    
    var oS=document.createElement('script');
    oS.src=url+'?'+json2url(data);
    
    var oHead=document.getElementsByTagName('head')[0];
    oHead.appendChild(oS);
    
    window[fnName]=function(data){
        json.success&&json.success(data);
        oHead.removeChild(oS);
    };
    
}

 



posted @ 2015-10-21 20:53  原以应  阅读(528)  评论(0)    收藏  举报