如何使用Ajax成功注册后登录用户? Laravel 5.4

时间:2017-09-13 09:33:41

标签: javascript php jquery ajax laravel-5.4

我试图使用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

1 个答案:

答案 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