2012-07-09 49 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/