欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

用原生JavaScript实现jQuery的$.getJSON的解决方法

程序员文章站 2022-05-02 12:20:19
今天在写一demo,其中用到了jquery的$.getjson方法,写完后发现整个demo中用到jquery中的就这一个地方,但要引入一个jquery实在不划算,于是就自己实现了一...

今天在写一demo,其中用到了jquery的$.getjson方法,写完后发现整个demo中用到jquery中的就这一个地方,但要引入一个jquery实在不划算,于是就自己实现了一个简单版的,基本可以满足需求,现分享出来:

. 代码如下:


var $ = {
getjson: function(url, params, callbackfuncname, callback){
var paramsurl ="",
jsonp = this.getquerystring(url)[callbackfuncname];
for(var key in params){
paramsurl+="&"+key+"="+encodeuricomponent(params[key]);
}
url+=paramsurl;
window[jsonp] = function(data) {
window[jsonp] = undefined;
try {
delete window[jsonp];
} catch(e) {}

 

if (head) {
head.removechild(script);
}
callback(data);
};

var head = document.getelementsbytagname('head')[0];
var script = document.createelement('script');
script.charset = "utf-8";
script.src = url;
head.appendchild(script);
return true;
},
getquerystring: function(url) {
var result = {}, querystring = (url && url.indexof("?")!=-1 && url.split("?")[1]) || location.search.substring(1),
re = /([^&=]+)=([^&]*)/g, m;
while (m = re.exec(querystring)) {
result[decodeuricomponent(m[1])] = decodeuricomponent(m[2]);
}
return result;
}
};

  调用demo如下:

. 代码如下:


var url = "https://xxx.xxx.xxx?callback=jsonp123";
var params = {
a:1,
b:2
};
$.getjson(url, params, "callback", function(data){
//todo
});