2017-04-03 6 views
-1

Ich versuche Remote-Formular von meiner React-Komponente zu senden. Das Backend wird mit Ruby on Rails erstellt.Angehängte Parameter zu POST

<form 
    className="message_form style__brook flex__column cen-hor cen-ver" 
    id="new_message" 
    acceptCharset="UTF-8" 
    onSubmit={this.handleSubmit} 
> 
    <input name="utf8" type="hidden" value="✓"/> 
    <input placeholder="Name" type="text" name="message[name]" id="message_name"/> 
    <input placeholder="Mail" type="email" name="message[email]" id="message_email"/> 
    <input placeholder="USD" type="number" name="message[budget]" id="message_budget"/> 
    <input value="Evaluation" type="hidden" name="message[subject]" id="message_subject"/> 
    <textarea placeholder="Message" name="message[body]" id="message_body"></textarea> 
    <input type="submit" name="commit" value="Send" disabled="disabled" data-disable-with="Send"/> 
</form> 

und handleSubmit sieht wie folgt aus:

handleSubmit(e) { 
    e.preventDefault(); 
    const object = getObjectFromForm(); 
    axios.post('/send_message', object) 
     .then(function (response) { 
     console.log(response); 
     }) 
     .catch(function (error) { 
     console.log(error); 
     }); 
} 

getObjectFromForm eine Funktion ist, wo ich ein Objekt bekommen schaffen, damit ich es als Parameter hinzufügen können. object sieht wie folgt aus:

object = {utf: "...", message: {"name": ..., "email": ... etc.}} 

Als ich die object zu axios POST-Funktion hinzufügen, es wird mit der Anfrage übergeben, aber es ist eine andere Aufgabe meiner Parameter angehängt, die Schlüssel email ist und es enthält object ‚s Tasten und Werte. Wenn ich die object von Axios-Methode entferne, dann werden keine Parameter übergeben.

Meine Frage ist - warum ist dieses zweite email Objekt bestanden, wenn ich es nicht definiert habe?

+0

Zeige einen ganzen Code von 'getObjectFromForm' – MysterX

+0

Bitte poste deine getObjectFromForm-Methodenlogik, damit wir sehen können, was sie macht, und auch aktuelle JSON-Daten-Dumps der Antwort - z. Kopiere/füge die Ausgabe von 'console.log (getObjectFromForm());'. –

+0

Der Objektwert ist wie ich es dir geschrieben habe. Die Sache ist sogar, wenn ich das Objekt mit einem handgeschriebenen Objekt, das nur die Schlüssel und Werte enthält, die ich brauche, da das andere Objekt noch als 'email' angehängt ist, wieder fülle – Ancinek

Antwort

0

Das Problem war wahrscheinlich mit Axios selbst. Durch Ändern des Codes für die Verwendung der jQuery ajax-Methode wird das Problem behoben.