2012-10-09 46 views
2

我有下面的代碼。爲什麼這個JSON變量未定義?

的JavaScript

<script> 
function postUser() { 
    var user = $('span input').serialize; 
    alert(user.username); 
} 
</script> 

HTML

<span> 
    User name : <input type="text" name="username"><br /> 
    Password: <input type="password" name="password" /><br /> 
    First name: <input type="text" name="firstName" /><br /> 
    Last name: <input type="text" name="lastName" /><br /> 

    <button onclick="postUser()">Submit</button> 
</span> 

當我填充用戶界面中的項目,警告說: 「未定義」 - 但我想通過序列化的陣列應該是一個JSON對象?任何想法爲什麼用戶名是未定義的?

+0

不要警報。使用'console.log(user)'的瀏覽器控制檯。 –

+1

好了,開始你不調用'連載()' – Shmiddty

回答

12

你爲了調用函數忘了()

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

此外,.serialize()給你一個string結果,而不是一個對象。

也許你想這個代替:

var username = $('span input[name=username]').val(); 

如果你想引用的所有值的對象,你需要做的。

var vals = {}; 

$('span input').each(function() { 
    vals[this.name] = this.value; 
}); 

var name = vals.username; 
1

這裏您不需要serialize

你需要的是得到它的名字是「用戶名」輸入的值:

alert($('input[name="username"]').val()); 
+0

謝謝你,這是連載之前是因爲我當時發佈的結果,所以我把它調試,以點後是不工作的原因,所以我做一個警報,忽略了我錯過了() – david99world

0

.serialize()用於編碼一組表單元素作爲提交字符串的。它不允許您將表單值作爲對象進行訪問。 Read more

HTML

<span> 
    User name : <input type="text" name="username"><br /> 
    Password: <input type="password" name="password" /><br /> 
    First name: <input type="text" name="firstName" /><br /> 
    Last name: <input type="text" name="lastName" /><br /> 

    <button id="btn" onclick="postUser()">Submit</button> 
</span>​ 

jQuery的

$("#btn").click(function(){ 
    alert($('input[name="username"]').val()); 
}); 

Try the demo here

相關問題