我相信这真的很简单。。。
我有下面的代码。。。
<script>
function postUser() {
var user = $('span').serialize();
$.post('userManagement/setUser', user);
}
</script>
<span>
Username : <input type="text" name = "userName"><br />
First name: <input type="text" name="firstName" /><br />
Last name: <input type="text" name="lastName" /><br />
Password: <input type="text" name="password" /><br />
<button onclick="postUser()">Submit</button>
</span>
没有发布任何内容(根据firebug的说法,POST中实际上是空的)。
如何张贴此表格?我想使用jQuery,这样我就可以更好地使用它,而不仅仅是把它放在HTML中。我的控制器需要一个JSON对象,它只是我的用户实体,具有上面的字段以及一个用于"访问"的整数。
我使用SpringMVC作为控制器。
谢谢,
试试这个:
var user = $('form').serialize();
然后:
<form action="#" method="post">
Username : <input type="text" name = "userName"><br />
First name: <input type="text" name="firstName" /><br />
Last name: <input type="text" name="lastName" /><br />
Password: <input type="text" name="password" /><br />
<button type="button" onclick="postUser()">Submit</button>
</form>
serialize()
用于序列化表单元素,而不是span
标记,请尝试以下操作:
将一组表单元素编码为字符串以供提交。
var user = $('span input').serialize(); // or $('form')
您遇到的问题是由于您误解了serialize()函数和正确的HTML结构。
.serialize()方法创建一个标准URL编码的文本字符串符号它对表示一组表单的jQuery对象进行操作元素。
尝试以下操作:
var user = $('span input').serialize();
这将定位跨度元素中的所有输入元素,并将数据分配给user
变量。
演示:http://jsfiddle.net/qSr7k/