jsonp

原创 韩秀利 随笔 javascript 180阅读 2018-04-25 09:47:42 举报

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('.', '');
// 挂到window上面,为了让全局都可以使用
window[fnName]=function(data){
    json.success && json.success(data);
    // 删除已经拿到数据的script标签
    oHead.removeChild(oS);
};
// 把cbName扔到json.data里面,为了一会转url时直接让扔到后面
json.data[json.cbName]=fnName;
// 把json转成url
var arr=[];
for(var name in json.data){
    // aaa=123
    arr.push(name+'='+json.data[name]);
}
// 把arr转成str
var str=arr.join('&');
// 创建script标签
var oS=document.createElement('script');
oS.src=json.url+'?'+str;
// 扔到head里面
var oHead=document.getElementsByTagName('head')[0];
oHead.appendChild(oS);

}

jsonp({
url: 'a.php',
data: {
wd: '12'
},
success: function(res){
console.log(res);
}
});

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复