2016-06-01 4 views
0

Ich habe ein Problem mit meinem, ich möchte die PUT-Methode mit JSON-Daten verwenden, aber es gibt diese Parameter in den Abfrage-String-Parameter und nicht in JSON, und ich kann nicht finde meinen Fehler. Ich würde gerne "Eisen-Ajax" verwenden, wenn möglich.Polymer Eisen-Form PUT Methode Pass Parameter in URL

  <form is="iron-form" method="put" action="http://localhost:5000/users/" id="loginForm" content-type="application/json"> 
       <paper-input name="username" label="Username" required auto-validate></paper-input> 
       <paper-input name="password" label="Password" type="password" required auto-validate></paper-input> 
       <paper-button raised onclick="_submit(event)" disabled id="loginFormSubmit"> 
       <paper-spinner id="spinner" hidden></paper-spinner>Submit</paper-button> 
       <paper-button raised onclick="_reset(event)">Reset</paper-button> 
       <div class="output"></div> 
      </form> 
      <script> 
       loginForm.addEventListener('change', function(event) { 
       loginFormSubmit.disabled = !loginForm.validate(); 
       }); 
       function _submit(event) { 
       spinner.active = true; 
       spinner.hidden = false; 
       loginFormSubmit.disabled = true; 
       Polymer.dom(event).localTarget.parentElement.submit(); 
       } 
       function _reset(event) { 
       var form = Polymer.dom(event).localTarget.parentElement 
       form.reset(); 
       form.querySelector('.output').innerHTML = ''; 
       } 
       document.getElementById('loginForm').addEventListener('iron-form-submit', function(event) { 
       spinner.active = false; 
       spinner.hidden = true; 
       loginFormSubmit.disabled = false; 
       this.querySelector('.output').innerHTML = JSON.stringify(event.detail); 
       }); 
       document.getElementById('loginForm').addEventListener('iron-form-response', function(response) { 
       console.log(response); 
       }); 
      </script> 

polymer iron-form error

danke Ihnen allen für Ihre Hilfe!

Antwort

1

enthält nur die Parameter im Körper von POST Anfragen. Die einfachste Problemumgehung besteht darin, Ihre method="put" in method="post" zu ändern und einen Handler für iron-form-presubmit (feuert nach Serialisierung) hinzuzufügen, um die Methode zurück zu PUT zu ändern.

form.addEventListener('iron-form-presubmit', function() { 
    this.request.method = 'put'; 
}); 

codepen

+0

Vielen Dank für Ihre Antwort! Das hat sehr gut funktioniert, aber jetzt sind die Parameter in den Kopfzeilen UND in der URL. Hast du eine Idee, wie du das loswerden kannst? :) Weißt du auch warum es 2 Anfragen gibt? http://imgur.com/nDn1tKn – gmolveau

+0

Ich kann dieses Verhalten nicht reproduzieren. Meine Tests zeigen, dass die Parameter von der URL zum Body (und nirgendwo sonst) verschoben wurden. Ich sehe nur 1 Anfrage. Ich schätze, dass Ihr Code sehr anders aussieht als das von Ihnen bereitgestellte. – tony19

+0

Ok danke! :) Dieser Ausschnitt stammt aus dem Polymer Doc. – gmolveau