用原生JavaScript实现jQuery的$.getJSON的解决方法
用原生JavaScript实现jQuery的$.getJSON的解决方法
发布时间:2016-12-30 来源:查字典编辑
摘要:今天在写一DEMO,其中用到了jQuery的$.getJSON方法,写完后发现整个DEMO中用到jQuery中的就这一个地方,但要引入一个j...

今天在写一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 = "http://xxx.xxx.xxx?callback=jsonp123";

var params = {

a:1,

b:2

};

$.getJSON(url, params, "callback", function(data){

//todo

});

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类