2017-12-22 5 views
0

Ich bin ziemlich neu zu programmieren und arbeiten am Lernen polymer.js. Im Moment arbeite ich gerade an einer einfachen Web-App, um einen Benutzer zu unterschreiben. Derzeit wird jedes Mal, wenn ich mein Formular abschicke, dieses Format wie unten gezeigt an ein komplettes JSON-Objekt übergeben.Submit Formularwerte in JSON-Objekt

{ 
    email: "[email protected]", 
    password: "password" 
} 

statt ...

{ 
    "email":"[email protected]", 
    "password":"password" 
} 

Hier ist mein Code:

<form action="http://httpbin.org/post" method="post"> 

    <sign-in-input email="{{_email}}" password="{{_password}}"></sign-in-input> 

    <input class = "paperbtn" type="submit" value="Sign in"> 

    <input name="email" value="[[_email]]" hidden> 
    <input name="password" value="[[_password]]" hidden> 

</form> 

sign-in-input.html:

<dom-module id="sign-in-input"> 
<template> 
     <paper-input label = "Email" id = "email" required></paper-input> 
     <paper-input label = "Password" id = "password" required></paper-input> 
</template> 

<script> 
    Polymer({ 
    is: 'sign-in-input', 

    properties: { 
     email: { 
     type: String, 
     notify: true 
     }, 
     password: { 
     type: String, 
     notify: true 
     } 
    }, 

    listeners: { 
     'input': '_onInput' 
    }, 

    _onInput: function() { 
     this.email = this.$.email.value.trim(); 
     this.password = this.$.password.value.trim(); 
    } 
    }); 
</script> 

+0

Ich sehe kein Problem. Sprichst du über den Abstand zwischen dem '' '' '' ''? Was macht das aus? – FrankerZ

+0

Was ist die Frage? – Liam

+0

Ich denke, das Problem ist 'email:" [email protected] "' sollte '" email "sein: "[email protected]" 'aber es ist nicht klar – Liam

Antwort

0

Sie senden ein Objekt (obj), wenn Sie eine Zeichenfolge senden sollten.

Haben Sie JSON.stringify(ob) für das Objekt verwendet, das Sie senden möchten?

Andere Dinge, über die Sie nicht fragen.


_onInput: function() { 
    this.email = this.$.email.value.trim(); 
    this.password = this.$.password.value.trim(); 
} 

sollten Sie this.set('email', this.$.email.value.trim() verwenden, da this.set ein Ereignis in Polymer sendet den Wert zu aktualisieren. Dies ist jetzt kein Problem, aber es kann in anderen Elementen sein, wenn Sie weiterhin this.[property] verwenden.


<paper-input label = "Email" id = "email" required></paper-input> 
    <paper-input label = "Password" id = "password" required></paper-input> 

Sie können Zuhörer binden an diese sofort, zu vermeiden, mit:

listeners: { 
    'input': '_onInput' 
}, 

_onInput: function() { 
    this.email = this.$.email.value.trim(); 
    this.password = this.$.password.value.trim(); 
} 

es so etwas wie aussehen:

<paper-input label="Email" id="email" value="{{email::input}}" required></paper-input> 
<paper-input label="Password" id="password" value="{{password::change}}" required></paper-input> 

Ich habe zwei Arten von Polymer-Hörer , Eingabe und ändern. Sie können beides verwenden.

Verwandte Themen