我正在尝试从数据中提取以提交它,为此我使用了jquery serializeArray((函数。这工作得很好,并给出输出为 { 名称:值 } 对象的数组。 这个名字类似于我为每个元素在形式上给出的名称。但是我想要侧子文档中的几个字段(名称(。举个例子
.HTML
<!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-2.1.1.min.js"></script>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
<form class="login">
<label for="_user_name">username:</label>
<input type="text" id="_user_name" name="user.name" value="dev.pus" />
<label for="_user_pass">password:</label>
<input type="password" id="_user_pass" name="user.pass" value="1234" />
<button type="submit">login</button>
</form>
</body>
</html>
JavaScript
var docFormParams = $("form.login"),
docData = docFormParams.serializeArray();
var finalJson ={};
for (var i = 0; i < docData.length; i++) {
finalJson[docData[i].name] = docData[i].value;
}
console.log(JSON.parse(JSON.stringify(finalJson)));
输出
[object Object] {
user.name: "dev.pus",
user.pass: "1234"
}
finalJson
[object Object] {
user.name: "dev.pus",
user.pass: "1234"
}
finalJson.user
undefined
[object Object] {
user.name: "dev.pus",
user.pass: "1234"
}
我想要的输出:
{
user :{name :"dev.pus",
pass :"1234"
}
}
如您所见,我尝试在名称中加入点,但它不起作用。有什么方法可以解决这个问题吗?谢谢
$("form.login").serializeArray();
将返回一个数组:
[{"name":"user.name","value":"dev.pus"},{"name":"user.pass","value":"1234"}]
您应该"拆分"每个元素的"名称",或在输入时更改"名称"。带有"拆分"的示例:http://jsfiddle.net/n1su1q0h/
尝试通过从表单中提取值来简单地构造一个 Javascript 对象。然后你可以序列化它:
obj = { "user": { "name": $('#_user_name').val(),
"pass": $('#_user_pass').val()
}
};
alert(JSON.stringify(obj));