为什么这个JSON变量未定义?

时间:2012-10-09 16:45:51

标签: javascript jquery 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>

当我填充UI中的项目时,警报显示&#34; undefined&#34; - 但我想通过序列化数组它应该是一个JSON对象?有关用户名未定义的任何想法吗?

3 个答案:

答案 0 :(得分: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 :(得分:1)

此处您不需要serialize

您需要获取名称为“username”的输入值:

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

答案 2 :(得分: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