2012-10-09 48 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

相关问题