2017-05-26 3 views
0

Ich bin neu in Knoten und ejs, ich unten Code haben, und müssen wissen, wie die Werte von EJs zu bekommen Datei, die esJSON Werte von ejs abrufen

EJS Datei

<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> 
zu mongoDB posten

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; 

    }); 

Ab sofort Datei, wenn ich DB mongo einfügen, um ich eine neue uUID aber die Werte werden in als "0"

bitte aasist

Antwort

2

So ist die Linie var item = $('form input'); ist eigentlich eine Sammlung von jedem Eingang, während die Leitung var user = [{username:item.val()},{password:item.val()},{email:item.val()}]; nur den Wert des ersten erregenden (dies wegen der ist, wie jQuery eine Sammlung erscheinen zu verstecken), I statt würde versuchen, diese (vorausgesetzt, Sie bestimmte Werte aus dieser Form greifen wollte):

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

Mit folgenden Änderung Ihrer 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> 

auch dieDas 0-Attribut im <label>-Element ist mit einem <input> zu verknüpfen, das ein id-Attribut mit demselben Wert hat. Wenn man bedenkt, dass id s eindeutig sein sollte und nur zu einem einzelnen Element aufgelöst werden sollte, würde ich vorschlagen, eine Art Namensraum wie input- hinzuzufügen.

+0

Danke Kumpel, es hat wirklich geholfen –