使用jquery从表单中获取值并将其作为ajax请求发送

时间:2012-10-29 17:42:29

标签: jquery ajax

正如每个开发人员所希望的那样,我想让我的代码简洁明了。但是有道理。

我有这个编辑个人资料字段,有几个字段,大约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;
});

问题,我错过了什么,我不能让它工作,是否有更好的方法来做到这一点。你认为硬编码会好得多吗。

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

2 个答案:

答案 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() }) ;
});​