2012-07-09 48 views
1

我敢肯定,这是很简单的东西...JSON值都是空

我有下面的代码...

<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> 

没有被公布(如POST简直是根据空到萤火虫)。

如何发布此表单?我想使用jQuery,以便我可以更好地使用它,而不是将它放入HTML中。我的控制器期待一个JSON对象,它只是我的用户实体,具有上面的字段以及一个“访问”整数。

我正在使用SpringMVC控制器。

感谢,

+0

尝试''

而不是''。 – 2012-07-09 19:44:57

+0

我不知道序列化函数,但你是否尝试过[JSON.stringify()](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/JSON/stringify)函数? – lowerkey 2012-07-09 19:46:36

回答

4

试试这个:

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> 
2

serialize()用于序列化表单元素不span标签,试试这个:

编码一组表单元素作为提交字符串。

var user = $('span input').serialize(); // or $('form') 
+0

真棒谢谢,我甚至需要序列化?我可以做var user = $('span input'); – david99world 2012-07-09 19:48:57

+0

@ david99world欢迎您,是的,它应该用于序列化的值,请注意,所有输入标签应该有一个名称属性。 – undefined 2012-07-09 19:50:08

+0

非常好,我不希望我的页面做任何其他的事情,这就是为什么我没有使用表单,因为它使我的页面更改到我的主页,并沿着url显示我的变量在GET中,这有点儿奇数,所以我只是使用跨度和张贴使用jQuery。 – david99world 2012-07-09 19:53:17

1

,你遇到的是由于你的serialize()功能和适当的HTML结构的误解的问题。

.serialize()方法以标准URL编码的 表示法创建一个文本字符串。它在代表一组表格 元素的jQuery对象上运行。

尝试以下方法:

var user = $('span input').serialize(); 

这将定位跨度元件之内的所有的输入元件和所述数据分配给user变量。

演示:http://jsfiddle.net/qSr7k/