我试图使用Ajax使用Modal注册框。它有效,但我如何记录用户呢?
这是RegisterController.php中重载的register
函数:
/**
* Handle a registration request for the application (overloaded).
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function register(Request $request)
{
$validator = $this->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
$this->create($request->all());
return response()->json();
}
这是Laravel附带的标准功能,并在注册时记录用户。
/**
* Handle a registration request for the application.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function register(Request $request)
{
$this->validator($request->all())->validate();
event(new Registered($user = $this->create($request->all())));
$this->guard()->login($user);
return $this->registered($request, $user)
?: redirect($this->redirectPath());
}
这是AJAX电话:
$(document).on('submit', '#formRegister', function(e) {
e.preventDefault();
$('input+small').text('');
$('input').parent().removeClass('has-error');
$.ajax({
method: $(this).attr('method'),
url: $(this).attr('action'),
data: $(this).serialize(),
dataType: "json"
})
.done(function(data) {
console.log(data);
$('.alert-success').removeClass('hidden');
$('#myModal').modal('hide');
})
.fail(function(data) {
console.log(data);
$.each(data.responseJSON, function (key, value) {
var input = '#formRegister input[name=' + key + ']';
$(input + '+small').text(value);
$(input).parent().addClass('has-error');
});
});
});
如何登录用户并重定向到/home
答案 0 :(得分:1)
在AJAX请求中使用success
。
$.ajax({
method: $(this).attr('method'),
url: $(this).attr('action'),
data: $(this).serialize(),
dataType: "json",
//add success option with following callback function
success: function(response) {
//(optional) check for response
window.location.href = '/home' //your desired url
}
});
PS :因为它不会在执行AJAX请求后重定向.done
。