【发布时间】:2016-12-20 15:29:34
【问题描述】:
我有一个非常基本的评论表单,它接受用户的一些文本输入并通过 AJAX 发送POST 请求以创建新评论。
var CommentForm = React.createClass({
propTypes: {
// ...
// ...
},
handleFormSubmit: function(e) {
e.preventDefault();
var component = this;
return $.ajax({
type: "POST",
url: this.props.someURL,
data: // ???? - Need to figure out how to serialize data here,
dataType: "json",
contentType: "application/json",
success: (function(response){ alert("SUCESS") }),
error: (function(){ alert("ERROR"); })
});
},
render: function() {
var component = this;
return (
<form onSubmit={component.handleFormSubmit} className="comments__form" id="new_comment" accept-charset="UTF-8">
// ...
</form>
);
}
});
我需要序列化表单数据以与我的POST 请求一起发送,但我不确定如何。我知道在 JQuery 中我可以选择表单元素并执行 $("#my_form").serialize() 之类的操作,但我似乎无法从 React 组件内部调用它(不知道为什么?)
其他一些 stackoverflow 答案建议为每个相关的 DOM 元素添加 ref='foo',然后我可以使用 React.findDOMNode(this.refs.foo).getValue(); 访问它们。这工作正常,但它让我手动构建整个序列化表单数据字符串,如果表单更长且复杂,这并不漂亮。
// Sample serialized form string
"utf8=✓&authenticity_token=+Bm8bJT+UBX6Hyr+f0Cqec65CR7qj6UEhHrl1gj0lJfhc85nuu+j2YhJC8f4PM1UAJbhzC0TtQTuceXpn5lSOg==&comment[body]=new+comment!"
有没有更惯用的方法来解决这个问题 - 也许是一个帮助器,可以让我在 ReactJS 中序列化我的表单数据?
谢谢!
【问题讨论】:
标签: javascript ajax forms serialization reactjs