zl程序教程

您现在的位置是:首页 >  前端

当前栏目

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

JavaScriptjQuery方法 实现 解决 原生 getJSON
2023-06-13 09:14:52 时间

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

复制代码代码如下:

var$={
   getJSON:function(url,params,callbackFuncName,callback){
       varparamsUrl="",
           jsonp=this.getQueryString(url)[callbackFuncName];
       for(varkeyinparams){
           paramsUrl+="&"+key+"="+encodeURIComponent(params[key]);
       }
       url+=paramsUrl;
       window[jsonp]=function(data){
           window[jsonp]=undefined;
           try{
               deletewindow[jsonp];
           }catch(e){}

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

       varhead=document.getElementsByTagName("head")[0];
       varscript=document.createElement("script");
       script.charset="UTF-8";
       script.src=url;
       head.appendChild(script);
       returntrue;
   },
   getQueryString:function(url){
       varresult={},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]);
       }
       returnresult;
   }
};


  调用DEMO如下:
复制代码代码如下:

varurl="http://xxx.xxx.xxx?callback=jsonp123";
varparams={
   a:1,
   b:2
};
$.getJSON(url,params,"callback",function(data){
   //todo
});