从ejs中检索JSON值

时间:2017-05-26 22:36:55

标签: javascript jquery

我是node和ejs的新手,我有以下代码,需要知道如何从EJs文件中获取值以将其发布到mongoDB

EJS文件

<form>
    <p>
        <label for="username"> Username </label>
        <input type="text" for="username"/>
    </p>
    <p>
        <label for="password"> Password </label>
        <input type="password" for="password" />
    </p>
    <p>
        <label for="email"> Email </label>
        <input type="text" for="email"/>
    </p>
    <button type="submit">Log In</button> 
</form>

JS档案

$('form').on('submit', function(){

      var item = $('form input');
      var user = [{username:item.val()},{password:item.val()},{email:item.val()}];

      console.log(user);

      $.ajax({
        type: 'POST',
        url: '/register',
        data: user,
        success: function(data){
          //do something with the data via front-end framework
            console.log(data);
          location.reload();
        }
      });

      return false;

  });

截至目前,当我插入mongo DB时,我获得了一个新的uuid,但值是"0"

请aasist

1 个答案:

答案 0 :(得分:2)

所以行var item = $('form input');实际上是每个输入的集合,而行var user = [{username:item.val()},{password:item.val()},{email:item.val()}];只抓取第一个的值(这是因为jQuery可能看起来隐藏了一个集合) ,相反,我会尝试这个(假设您想从该表单中获取特定值):

var items = $('form');
var user = {
      username: $('[name=username]', items).val(),
      password: $('[name=password]', items).val(),
      email: $('[name=email]', items).val()
    };

对您的html进行以下更改

<form>
    <p>
        <label for="input-username"> Username </label>
        <input type="text" id="input-username" name="username"/>
    </p>
    <p>
        <label for="input-password"> Password </label>
        <input type="password" id="input-password" name="password" />
    </p>
    <p>
        <label for="input-email"> Email </label>
        <input type="text" id="input-email" name="email"/>
    </p>
    <button type="submit">Log In</button> 
</form> 

for元素中的<label>属性也与具有相同值的<input>属性的id相关联。因此,考虑到id s应该是唯一的并且仅解析为单个元素,我建议为它们添加某种类型的名称间距,如input-