Tôi đang chạy ứng dụng Laravel 5 có chế độ xem chính được hiển thị bằng React.js. Trên trang, tôi có một biểu mẫu đầu vào đơn giản, mà tôi đang xử lý bằng Ajax (gửi lại đầu vào mà không cần làm mới trang). Tôi xác thực dữ liệu đầu vào trong UserController của mình. Những gì tôi muốn làm là hiển thị thông báo lỗi (nếu đầu vào không vượt qua xác nhận) trong quan điểm của tôi.Hiển thị lỗi xác thực trong Laravel 5 với React.js và Ajax
Tôi cũng muốn các lỗi xác thực xuất hiện dựa trên trạng thái (đã gửi hoặc không được gửi) trong mã React.js.
Làm cách nào để thực hiện việc này bằng React.js và không làm mới trang?
Dưới đây là một số mã:
React.js mã:
var ReactCSSTransitionGroup = React.addons.CSSTransitionGroup;
var SignupForm = React.createClass({
getInitialState: function() {
return {email: '', submitted: false, error: false};
},
_updateInputValue(e) {
this.setState({email: e.target.value});
},
render: function() {
var text = this.state.submitted ? 'Thank you! Expect a follow up at '+email+' soon!' : 'Enter your email to request early access:';
var style = this.state.submitted ? {"backgroundColor": "rgba(26, 188, 156, 0.4)"} : {};
return (
<div>
{this.state.submitted ? null :
<div className="overall-input">
<ReactCSSTransitionGroup transitionName="example" transitionAppear={true}>
<input type="email" className="input_field" onChange={this._updateInputValue} ref="email" value={this.state.email} />
<div className="button-row">
<a href="#" className="button" onClick={this.saveAndContinue}>Request Invite</a>
</div>
</ReactCSSTransitionGroup>
</div>
}
</div>
)
},
saveAndContinue: function(e) {
e.preventDefault()
if(this.state.submitted==false) {
email = this.refs.email.getDOMNode().value
this.setState({email: email})
this.setState({submitted: !this.state.submitted});
request = $.ajax({
url: "/user",
type: "post",
data: 'email=' + email + '&_token={{ csrf_token() }}',
data: {'email': email, '_token': $('meta[name=_token]').attr('content')},
beforeSend: function(data){console.log(data);},
success:function(data){},
});
setTimeout(function(){
this.setState({submitted:false});
}.bind(this),5000);
}
}
});
React.render(<SignupForm/>, document.getElementById('content'));
UserController:
public function store(Request $request) {
$this->validate($request, [
'email' => 'Required|Email|Min:2|Max:80'
]);
$email = $request->input('email');;
$user = new User;
$user->email = $email;
$user->save();
return $email;
}
Cảm ơn bạn đã giúp đỡ của bạn!
lỗi nào bạn nhận được? –
Xin lỗi nó giống như tôi không hiểu làm thế nào để vượt qua các lỗi xác nhận để React.js – user1072337
Bạn không thể chỉ gửi một HTTP 400 như một phản ứng khi xác nhận không được thông qua và hiển thị lỗi trong gọi lại 'lỗi' trong ajax yêu cầu? –