我正试图在laravel 5中通过ajax提交一个表单,它在一定程度上有效。
这是我的ajax/jQuery:
$('#RegisterSubmit').click(function(e){
e.preventDefault();
var form = $('#RegisterForm');
$.ajax({
type: 'POST',
url: '/register_process',
data: form.serialize(),
dataType: 'json',
timeout: 9000,
});
$('#RegisterForm')[0].reset();
});
一切正常,用户可以注册并将信息发送到数据库,但是当用户出错时,我希望有一条消息说:“用户名字段是空的”。
我通过这样的html实现了这一点:
<div class="form-group">
<label class = "col" for = "username" >username:</label>
<div class = "col">
<input id = "username" class=" input {{ $errors->has('username') ? 'has-error' : '' }}" type = "username" name = "username" value="{{ Input::old('username') }}"></input><br>
{!! $errors->first('username' , '<span style = "color:red">:message</span>') !!}
</div>
</div>
但是现在我不能再用它了,因为我用ajax发送数据,我能做些什么来解决这个问题呢?
以下是我展示信息的方式:
public function StoreRegister()
{
$messages = [
'unique' => 'Acest :attribute deja exista',
'min' => 'Câmpul :attribute trebuie sa conţina cel puţin :min caractere',
'required' => 'Campul :attribute trebuie completat',
'email' => 'Campul :attribute trebuie sa fie valid'
];
$validator = Validator::make(Input::all(),Register::$rules,$messages);
if($validator->fails())
{
return Redirect::back()->withInput()->withErrors($validator);
}
Register::saveFormData(Input::except(array('_token')));
return Redirect::to('/');
}
发布于 2015-07-26 01:53:56
$.ajax({
type: 'POST',
url: '/register_process',
data: form.serialize(),
dataType: 'json',
timeout: 9000,
error: function(data){
if( data.status === 422 ) {
var errors = data.responseJSON;
errorHtml='<div class="errors"><ul>';
$.each( errors, function( key, value ) {
errorHtml += '<li>' + value[0] + '</li>';
});
errorHtml += '</ul></div>';
$( '#formerrors' ).html( errorHtml );
}
}
});
在ajax期间使用validate时,laravel生成包含每个错误消息的json,并且响应的状态是422.Do --不要忘记添加一个div来显示错误。
<div id="formerrors"></div>
https://stackoverflow.com/questions/31635347
复制相似问题