Javascript Laravel 5.3 AJAX登录不';t重定向

Javascript Laravel 5.3 AJAX登录不';t重定向,javascript,ajax,laravel,laravel-5.2,Javascript,Ajax,Laravel,Laravel 5.2,我也有类似的问题 我正在尝试使用Laravel5.3Auth进行AJAX登录 以下是我目前得到的信息: var login = function() { var data = {}; data["email"] = $('#email').val(); data["password"] = $('#password').val(); if($('#remember').is(':checked')) data["remember"] = "on"; $.ajax({ typ

我也有类似的问题

我正在尝试使用Laravel5.3Auth进行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";
    }
});
})

我正在以
X-CSRF-token
头发送CRSF令牌

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

同样,当我传递错误的凭证时,我会保持在同一页上, 但是我可以看到,
/login
页面被加载到单独的调用中,并显示了一条错误消息

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

为什么浏览器在“后台”加载时不重定向到该页面

编辑:我得到了正确的页面以及请求-响应,我可以看到它 在控制台中(
console.log(数据)
;)


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


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

在控制器方法中

function login(Request $request){
    if(\Auth::attempt($request)){
        return response()->json('success');
    }else{
        return response()->json('wrong username or pass', 401);
    }
}
在ajax中

$.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";
    },
    error : function(data){
        alert(data);
    }
});

在控制器方法中

function login(Request $request){
    if(\Auth::attempt($request)){
        return response()->json('success');
    }else{
        return response()->json('wrong username or pass', 401);
    }
}
在ajax中

$.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";
    },
    error : function(data){
        alert(data);
    }
});
这里有一个有趣的例子

这是:

var loginForm = $("#loginForm");
loginForm.submit(function(e) {
    e.preventDefault();
    var formData = loginForm.serialize();
    $('#form-errors-email').html("");
    $('#form-errors-password').html("");
    $('#form-login-errors').html("");
    $("#email-div").removeClass("has-error");
    $("#password-div").removeClass("has-error");
    $("#login-errors").removeClass("has-error");
    $.ajax({
        url: '/login',
        type: 'POST',
        data: formData,
        success: function(data) {
            $('#loginModal').modal('hide');
            location.reload(true);
        },
        error: function(data) {
            console.log(data.responseText);
            var obj = jQuery.parseJSON(data.responseText);
            if (obj.email) {
                $("#email-div").addClass("has-error");
                $('#form-errors-email').html(obj.email);
            }
            if (obj.password) {
                $("#password-div").addClass("has-error");
                $('#form-errors-password').html(obj.password);
            }
            if (obj.error) {
                $("#login-errors").addClass("has-error");
                $('#form-login-errors').html(obj.error);
            }
        }
    });
});
这里有一个有趣的例子

这是:

var loginForm = $("#loginForm");
loginForm.submit(function(e) {
    e.preventDefault();
    var formData = loginForm.serialize();
    $('#form-errors-email').html("");
    $('#form-errors-password').html("");
    $('#form-login-errors').html("");
    $("#email-div").removeClass("has-error");
    $("#password-div").removeClass("has-error");
    $("#login-errors").removeClass("has-error");
    $.ajax({
        url: '/login',
        type: 'POST',
        data: formData,
        success: function(data) {
            $('#loginModal').modal('hide');
            location.reload(true);
        },
        error: function(data) {
            console.log(data.responseText);
            var obj = jQuery.parseJSON(data.responseText);
            if (obj.email) {
                $("#email-div").addClass("has-error");
                $('#form-errors-email').html(obj.email);
            }
            if (obj.password) {
                $("#password-div").addClass("has-error");
                $('#form-errors-password').html(obj.password);
            }
            if (obj.error) {
                $("#login-errors").addClass("has-error");
                $('#form-login-errors').html(obj.error);
            }
        }
    });
});

你在AJAX请求中看到错误了吗?@Michel没有,事实上,如果我刷新登录页面,它会将我重定向到仪表板。因此,它确实正确设置了会话,但没有重定向。您应该手动重定向用户。。。取消注释最后一个line@Sherif,我想知道,如果我错过了凭据,我的凭据就错了。问题可能在于AJAX请求在重定向之前预期的响应。试试我回答中的代码。你在AJAX请求中看到错误了吗?@Michel没有,事实上,如果我刷新登录页面,它会将我重定向到仪表板。因此,它确实正确设置了会话,但没有重定向。您应该手动重定向用户。。。取消注释最后一个line@Sherif,我想知道,如果我错过了凭据,我的凭据就错了。问题可能在于AJAX请求在重定向之前预期的响应。请尝试我答案中的代码。我正在尝试在不覆盖Laravel Auth功能的情况下使其正常工作。我也会对此进行测试,并让您知道。我正在尝试在不覆盖Laravel Auth功能的情况下使其正常工作。我也会测试一下,然后告诉你。谢谢!我找到了更像面向“5.3”的解决方案:)谢谢!我找到了更像面向“5.3”的解决方案:)