extjs源码分析-009(Ext.urlDecode/urlEncode)
//把json格式转化成url的编码方式// e.g. Ext.urlEncode({foo: 1, bar: 2}); would return "foo=1&bar=2"urlEncode: function(o, pre){//o为json对象,pre为前缀 var undef, buf = [], key, e = encodeURIComponent; for(key in o){ undef = !Ext.isDefined(o); Ext.each(undef ? key : o, function(val, i){ buf.push("&", e(key), "=", (val != key || !undef) ? e(val) : ""); }); } if(!pre){ buf.shift(); pre = ""; } return pre + buf.join(''); },//把URL字符串编码转化成json对象//Ext.urlDecode("foo=1&bar=2"); // returns {foo: "1", bar: "2"}//Ext.urlDecode("foo=1&bar=2&bar=3&bar=4", false); // returns {foo: "1", bar: ["2", "3", "4"]}urlDecode : function(string, overwrite){//string URL参数,overwrite针对同一参数的多个值是否覆盖,false为不覆盖,那就返回这个参数的数组 var obj = {}, pairs = string.split('&'), d = decodeURIComponent, name, value; Ext.each(pairs, function(pair) { pair = pair.split('='); name = d(pair); value = d(pair); obj = overwrite || !obj ? value : [].concat(obj).concat(value); }); return obj; }
页:
[1]