2013-03-30 25 views
-3

如何從序列化jquery中的對象獲取正確的json結構?如何從序列化jQuery中的對象獲取正確的json結構?

我的代碼看起來是這樣的:

<form id="myform"> 
<input name="Name[OrganizationName]" id="OrganizationName" /> 
</form> 

這是輸出是這樣的:

"Name[OrganizationName]": "Bill"} 

,但我想這一點:

"Name":{"OrganizationName":"Bill"} 

這裏是我的系列化JS:

$.fn.serializeObject = function(){ 
var o = {}; 
var a = this.serializeArray(); 
$.each(a, function() { 
    if (o[this.name]) { 
     if (!o[this.name].push) { 
      o[this.name] = [o[this.name]]; 
     } 
     o[this.name].push(this.value || ''); 
    } else { 
     o[this.name] = this.value || ''; 
    } 
}); 
return o; 
}; 

,我通過調用它:

$("#form-add-po").serializeObject(); 
+0

'名稱= 「名稱[單位名稱]」'看起來都是錯誤的。爲什麼不用'name =「OrganizationName」'或'name =「OrganizationName []」'爲多個同名的字段? –

+0

粘貼無用的json作爲帖子的主題是什麼?非常有意義! – charlietfl

回答

0
$.fn.wrongLogic = function() { 
    var o = {}; 
    this.find('input').each(function() { 
     if (this.name.indexOf('[') > -1) { 
      var prop = this.name.match(/\[(\w+)\]$/)[1], 
       mainProp = this.name.split('[')[0], 
       n = {}, 
      if (o.hasOwnProperty(mainProp)) { 
       o[mainProp][prop] = this.value; 
      } else { 
       n[prop] = this.value; 
       o[mainProp] = n; 
      } 
     } else { 
      o[this.name] = this.value; 
     } 
    }) 
    return o; 
}; 

http://jsfiddle.net/h2jE5/1/

相關問題