我有以下代码:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html;charset=utf-8' />
<script type='text/javascript' src='jquery-1.10.2.min.js'></script>
</head>
<body>
<form id="testForm" method="post" action="">
<textarea id="test" rows="15" cols="60"></textarea>
</form>
<button type="button" onclick="console.log($('#testForm :input').serializeArray());">Send</button>
</body>
</html>
Chrome控制台正在打印一个空数组,就像#testForm:输入选择器没有选择textarea一样。我正在寻找一种方法来选择所有表单输入,这适用于除textarea之外的其他元素。我怎么解决?序列化* 数组 *是必需的还是我可以使用serialize方法将数据发送到服务器?
答案 0 :(得分:1)
.serializeArray()使用input元素的名称来序列化,因为你的元素没有名字,所以省略了它。
.serializeArray()方法使用标准的W3C规则 成功的控制,以确定它应包括哪些元素;在 特别是该元素不能被禁用,必须包含一个名称 属性。
<textarea name="test" id="test" rows="15" cols="60"></textarea>
演示:Fiddle
答案 1 :(得分:1)
要使serializeArray()
方法有效(并且您的HTML有效),您需要为textarea
提供name
属性:
<form id="testForm" method="post" action="">
<textarea id="test" rows="15" cols="60" name="foo"></textarea>
</form>
<button type="button" onclick="console.log($('#testForm :input').serializeArray());">Send</button>
答案 2 :(得分:1)
.serializeArray()
需要name属性来创建数组,因此插入名称选项
<textarea name="test" id="test" rows="17" cols="65"></textarea>