2012-08-28 31 views
1

我有這個問題,我使用serializearray()jquery用於序列化窗體到Json的所有字段。 它工作正常,如果在輸入我把名稱屬性,但如果我想只把ID屬性它不起作用。Jquery - SerializeArray()通過編號

的良好的功能受到名[名是類似的: '#myformnameid']:

function formToJson(nameForm) 
{ 
var jsonForm={}; 
var queryFrom = $(nameForm).serializeArray(); 

for (i in queryFrom) { 
    jsonForm[queryFrom[i].name] = queryFrom[i].value; 
    } 
return jsonForm; 
} 

我試圖用於使用attr ID溶液。

function formToJson(nameForm) 
{ 
var jsonForm={}; 
var queryFrom = $(nameForm).serializeArray(); 

for (i in queryFrom) { 
    jsonForm[queryFrom[i].attr("id")] = queryFrom[i].value; 
    } 
return jsonForm; 
} 

任何想法?

回答

1

serializeArray所做的是以輸入對象的形式將它們轉換爲javascript對象數組。從documentation,形式類似於

[ 
    { 
    name: "a", 
    value: "1" 
    }, 
    { 
    name: "b", 
    value: "2" 
    }, 
    { 
    name: "c", 
    value: "3" 
    }  
] 

您可以通過名稱或實際值超過這個數組迭代,像你這樣做,它會返回正確的數據。

您遇到的問題是您不再遍歷實際元素,只是來自這些元素的數據。如果您想要遍歷元素,則需要執行以下操作:

function formToJson(nameForm) 
{ 
var jsonForm={}; 
$("input", $(nameForm)).each(function(index){ 
    jsonForm[$(this).attr("id")] = this.value; 
}) 
return jsonForm; 
} 
+0

Yu're太棒了!它工作正常!!!謝謝 – Shinigami