Javascript Laravel 5.3 AJAX登录不';t重定向
我也有类似的问题 我正在尝试使用Laravel5.3Auth进行AJAX登录 以下是我目前得到的信息: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
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”的解决方案:)