javascript - Laravel 5.3 AJAX 登录不重定向

标签 javascript ajax laravel laravel-5

我有类似的问题 one .

我正在尝试使用 Laravel 5.3 Auth 进行 AJAX 登录。

这是我到目前为止得到的:

var login = function()
{
var data = {};

data["email"] = $('#email').val();
data["password"] = $('#password').val();

if($('#remember').is(':checked'))
    data["remember"] = "on";

$.ajax({
    type: "POST",
    url: '/login',
    data: JSON.stringify(data),
    // data: data,
    headers : { 'Content-Type': 'application/json' },

    success: function(data) {
        console.log(data);
        // window.location.href = "/dashboard";
    }
});

};

我将 CRSF token 发送为 X-CSRF-TOKEN header 。

问题是,当我成功登录时,我在同一页面上说, 但在“网络”选项卡中我可以看到 /dashboard页面已加载,但我不是 重定向。

以同样的方式,当我传递错误的凭据时,我会停留在同一页面上, 但我可以看到/login页面在单独的调用中加载,并带有实际显示的错误消息。

此外,我也尝试过不使用 headers : { 'Content-Type': 'application/json' }, 并将数据发送为:data = data,但我也得到同样的结果。

为什么浏览器不会重定向到该页面,因为它正在“后台”加载该页面?

编辑:我也得到了正确的页面作为请求响应,我可以看到它 在控制台中(console.log(data);)。

最佳答案

//Login FORM
$(document).on('submit', 'form#FormID', function(e) {
    e.preventDefault();
            var forms = document.querySelector('form#FormID');
            var request = new XMLHttpRequest();
            var formDatas = new FormData(forms);
            request.open('post','/login');
            request.send(formDatas);

            request.onreadystatechange = function() {
                if (request.readyState === 4) {
                    if (request.status === 200) {

                        if (request.responseText == 'success') {
                            setTimeout(function() {
                                window.location.href = "/dashboard";
                            }, 5000);
                        }else{

                        };


                    }
                }
            }
});



//Controller
public function authUser(Request $request){
        $data = $request->except('_token');

        $validate = \Validator::make($data, [
            'email' => 'email'
            ]);

        if ($validate->fails())
            return 'Invalid email format for username.';

        if (\Auth::attempt($data)) {
            return 'success';
        }else{
            return 'Invalid username or password';
        }
    }


//Route
Route::post('/login', 'YourController@authUser');

问题可能出在重定向之前预期 AJAX 请求的响应。 尝试上面的代码。

关于javascript - Laravel 5.3 AJAX 登录不重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40631575/

相关文章:

javascript - if 条件中的递归混淆,JS 是如何解释 "truthly/falsely"条件的?

php - 显示旧响应的 Jquery ajax 请求

javascript - 无法使用他们的 API 将帖子发布到 Facebook 页面

javascript - 如何为 meteor 网站添加菜单/子主题?

php - 直接从 jQuery 插件发出 Ajax 请求是不好的做法吗?

javascript - 延迟 AngularJS 中的整个页面加载,直到服务的 ajax 完成

php - 在 AWS Elastic Beanstalk 上部署 Laravel 4 应用程序

php - 如何形成帖子(验证和更新我的数据库)- Controller 语法

laravel - 如何在 CENTOS 服务器上托管 laravel 5.2

javascript - 如何将 super 菜单的Click事件转换为hover