/**
url :请求的地址
json : 各种参数
callback:回调函数
**/
function jsonp(url,json,cbName,callBack){
//1.先弄一个随机数 用作服务端回调函数的名称
var cb = new Date().getTime()+Math.random();
cb = new String(cb).replace(".","");
json[cbName] = "cb_"+cb;
//把回调函数 预先定义好 方便服务端返回的函数调用
window[json[cbName]] = function(data){
//当调用回调函数的时候 把相关的资源清除掉 减少内存的占用
document.getElementsByTagName("head")[0].removeChild(oScript);
window[json[cbName]] = null;
callBack && callBack(data);
}
//2 拼接服务端地址 url
var tempUrl = json2Url(json);
var url = url + "?" + tempUrl;
//3.创建script 标签
var oScript = document.createElement("script");
oScript.src = url;
oScript.type = "text/javascript";
document.getElementsByTagName("head")[0].appendChild(oScript);
}
/**
把json 转成相应的url
**/
function json2Url(json){
var arr = [];
var index = 0;
for(var i in json){
arr[index] = i+"="+json[i];
index++;
}
return arr.join("&");
}
遇到的两个问题 1.jquery getJSON 方法是 callback 后不加 问号的话 就会报 不允许跨域访问
2.回调函数为数字时 客户端调用不了