正如每个开发人员所希望的那样,我想让我的代码简洁明了。但是有道理。
我有这个编辑个人资料字段,有几个字段,大约10个文本框和2个单选按钮。
在一个简单的登录表单中,我可以像这样获取用户名和密码的值:
$("#username")
和$("#password")
并将它们分别分配给变量username
password
,
这将变成这样:(在ajax中)
$.ajax({
url : some_url,
data: {
username : username,
password : password
success : something
}
});
但如果我有几个字段,我不希望我的代码变得非常混乱,具有所有这些分配。
所以我想出了一个基于输入id的键值对
var object;
$("#formUpdate:input").each(function(){
var key = $(this).attr('id');
var value = $(this).val();
object.key = value;
});
问题,我错过了什么,我不能让它工作,是否有更好的方法来做到这一点。你认为硬编码会好得多吗。
非常感谢!今天是我的生日。
答案 0 :(得分:3)
您使用错误的语法向对象添加动态密钥。您需要括号表示法["string"]
var obj = {};
$("#formUpdate :input").each(function(){
var key = $(this).attr('id');
var val = $(this).val();
obj[key] = val;
});
虽然你应该能够做到:
var obj = $("#formUpdate").serialzeArray();
假设您的输入也有名称属性。
编辑:您还在输入选择器中缺少空格。
答案 1 :(得分:1)
您需要将它们作为键传递:值:对 ..试试这个
如果你想存储为对象数组..
var arr = [];
$("#formUpdate :input").each(function() {
arr.push( { $(this).attr('id') : $(this).val() }) ;
});