extjs源码分析-(Ext.urlDecode/urlEncode)

  1. //把json格式转化成url的编码方式  
  2. // e.g. Ext.urlEncode({foo: 1, bar: 2}); would return "foo=1&bar=2"  
  3. urlEncode: function(o, pre){//o为json对象,pre为前缀  
  4.             var undef, buf = [], key, e = encodeURIComponent;  
  5.   
  6.             for(key in o){  
  7.                 undef = !Ext.isDefined(o[key]);  
  8.                 Ext.each(undef ? key : o[key], function(val, i){  
  9.                     buf.push("&", e(key), "=", (val != key || !undef) ? e(val) : "");  
  10.                 });  
  11.             }  
  12.             if(!pre){  
  13.                 buf.shift();  
  14.                 pre = "";  
  15.             }  
  16.             return pre + buf.join('');  
  17.         },  
  18. //把URL字符串编码转化成json对象  
  19. //Ext.urlDecode("foo=1&bar=2"); // returns {foo: "1", bar: "2"}  
  20. //Ext.urlDecode("foo=1&bar=2&bar=3&bar=4", false); // returns {foo: "1", bar: ["2", "3", "4"]}  
  21.   
  22. urlDecode : function(string, overwrite){//string URL参数,overwrite针对同一参数的多个值是否覆盖,false为不覆盖,那就返回这个参数的数组  
  23.             var obj = {},  
  24.                 pairs = string.split('&'),  
  25.                 d = decodeURIComponent,  
  26.                 name,  
  27.                 value;  
  28.             Ext.each(pairs, function(pair) {  
  29.                 pair = pair.split('=');  
  30.                 name = d(pair[0]);  
  31.                 value = d(pair[1]);  
  32.                 obj[name] = overwrite || !obj[name] ? value :  
  33.                             [].concat(obj[name]).concat(value);  
  34.             });  
  35.             return obj;  
  36.         }  
原文链接: http://lovebeyond.iteye.com/blog/949502

你可能感兴趣的:(javascript,extjs)