2012-10-29 16 views
2

正如每個開發人員都希望的那樣,我想讓我的代碼簡潔而簡單。但是有道理。每個使用jquery從表單獲取值並將其作爲ajax請求發送

我有這個編輯配置文件字段有幾個字段,約10個文本框和2個單選按鈕。

在一個簡單的登錄表單,我可以獲取用戶名和密碼的值是這樣的:

$("#username")$("#password") ,並將其分配到各自的變量usernamepassword

這將變成這個樣子(阿賈克斯)

$.ajax({ 
    url : some_url, 
    data: { 
     username : username, 
     password : password 
    success : something 
    } 
}); 

但如果我有幾個領域,我不希望我的代碼是超級凌亂,有所有的t軟管分配。

,所以我想出了用具有鍵值對的想法,將根據他們的意見-ID

var object; 
$("#formUpdate:input").each(function(){ 
     var key = $(this).attr('id'); 
     var value = $(this).val(); 
     object.key = value; 
}); 

問題,我失去了什麼,我不能讓它工作雖然,有沒有更好的方法來做到這一點。你認爲硬編碼更好嗎?

非常感謝!今天是我的生日btw。

+0

你應該只能使用'$(form).serializeArray()',儘管這是基於輸入的名字,而不是id。 –

回答

3

您使用了錯誤的語法添加一個動態的關鍵到一個對象。你需要括號標記["string"]

var obj = {}; 
$("#formUpdate :input").each(function(){ 
    var key = $(this).attr('id'); 
    var val = $(this).val(); 
    obj[key] = val; 
}); 

雖然你應該能夠只是做:

var obj = $("#formUpdate").serialzeArray(); 

假設你的投入也有name屬性。

編輯:你也在你的輸入選擇器中缺少一個空格。

+0

不知道有一個serializeArray函數。但無論如何,做我喜歡做的事情總是很好,然後再問。呵呵呵呵。非常感謝你的凱文! –

1

你需要將它們傳遞的關鍵:值:對 ..如果你希望保存爲對象的數組試試這個

..

var arr = []; 
$("#formUpdate :input").each(function() { 
    arr.push({ $(this).attr('id') : $(this).val() }) ; 
});​ 
相關問題