Jquery中增加参数与Json转换代码

  在jquery中,使用$("#myform").serialize()可以将表单的内容构造成一个querystring,例如width=1680&height=1050这样的表达式,可以转化为json

  表达式{"width":"1680","height":"1050"}。

  有时候,我们需要进一步转化为json表达式,参考Ext中的Ext.urlDecode函数,我们可以实现一个相应的jquery中使用的函数:

  

复制代码 代码如下:

  $.par2Json=function(string, overwrite){

  var obj = {},

  pairs = string.split('&'),

  d = decodeURIComponent,

  name,

  value;

  $.each(pairs, function(i,pair) {

  pair = pair.split('=');

  name = d(pair[0]);

  value = d(pair[1]);

  obj[name] = overwrite || !obj[name] ? value :

  [].concat(obj[name]).concat(value);

  });

  return obj;

  };

  如果有必要,可以使用$.toJson(s)转化为Json Object.

  如果反过来,将json表达式转化为querystr参数形式,可以使用$.param()方法,或者我们自己实现一个,例如下面代码:

  

复制代码 代码如下:

  $.json2Par=function(o, pre){

  var undef, buf = [], key, e = encodeURIComponent;

  for(key in o){

  undef = o[key]== 'undefined';

  $.each(undef ? key : o[key], function(val, i){

  buf.push("&", e(key), "=", (val != key || !undef) ? e(val) : "");

  });

  }

  if(!pre){

  buf.shift();

  pre = "";

  }

  return pre + buf.join('');

  };