我正在尝试从我的React组件提交远程表单。后端是使用Ruby on Rails创建的。
<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>
和 handleSubmit 如下所示:
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
是一个函数,我可以在其中创建一个对象,以便将其添加为参数。 object
看起来像这样:
object = {utf: "...", message: {"name": ..., "email": ... etc.}}
当我将object
添加到axios POST函数时,它会随请求一起传递,但是我的参数附加了另一个对象,其中键为email
并且包含object
& #39; s键和值。当我从axios方法中删除object
时,没有传递任何参数。
我的问题是 - 为什么在我没有定义它时会传递第二个email
对象?
答案 0 :(得分:0)
这个问题可能与axios本身有关。更改代码以使用jQuery ajax方法解决了这个问题。