Jsonp跨域

原理:利用 //定义callback函数 function show(json){ // 要执行的代码 } //执行 show(json);

为了使用方便,我们需要封装一个Jsonp函数,方便使用:

 function jsonp(json){
    var json = json || {};
    if(!json.url){
        return;
    }
    json.data = json.data || {};
    json.cbName = json.cbName || 'cb';

    var fnName = 'jsonp_'+Math.random();
//把随机数里面的"."去掉
    fnName = fnName.replace('.','');
    var oS = document.createElement('script');
    json.data[json.cbName] = fnName;
    var arr = [];
    for(var name in json.data){
        arr.push(name + '=' + json.data[name]);
    }
    oS.src = json.url + '?' + arr.join('&');
    var oHead = document.getElementsByTagName('head')[0];
    oHead.appendChild(oS);
    window[fnName] = function(json2) {
        json.success && json.success(json2);
        //创建的script标签使用完,删除
        oHead.removeChild(oS);
    }
}

你可能感兴趣的:(Jsonp跨域)