gpt4 book ai didi

jquery - Laravel 5.5 Ajax 注销无重定向

转载 作者:行者123 更新时间:2023-12-01 04:36:41 26 4
gpt4 key购买 nike

我正在尝试在 Blade View 内创建一个注销按钮,该按钮可以注销用户而不重定向他们。我只想重新加载同一页面。

我认为 ajax 是最好的方法,(但我可能是错的)。

这是我的按钮:

@if (auth()->check())
<p>Vous êtes identifié en tant que <strong>{{ auth()->user()->name }}</strong>. <a href="#" onclick="event.preventDefault(); document.getElementById('logout-form').submit();">Se déconnecter ?</a>
<form id="logout-form" action="{{ url('/logout') }}" method="POST" style="display: none;">
{{ csrf_field() }}
</form>
</p>
@endif

这是我的 ajax 函数:

<script>
// Ajax Logout
$('#logout-form').on('submit',function(e){
e.preventDefault(e);
var dest_url = "{{ url('/logout') }}";
$.ajax({
type:"POST",
url:dest_url,
data:$(this).serialize(),
dataType: 'json',
headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
success: function(data){
c = "success";
t = "Succès";
m = "Vous avez été déconnecté";
i = "icon-circle-check";
iziToast.show({
class:"iziToast-"+c||"",
title:t||"Sans titre",
message:m||"-",
animateInside:!1,
position:"topRight",
progressBar:!1,
icon:i,
timeout:9000,
transitionIn:"fadeInLeft",
transitionOut:"fadeOut",
transitionInMobile:"fadeIn",
transitionOutMobile:"fadeOut"
});
}
})
});
</script>

我的路线文件(web.php)

Auth::routes();
Route::post('logout', '\App\Http\Controllers\Auth\LoginController@logout');

LoginController.php

 /**
* Custom logout function with redirect back if ajax.
*
* @return void
*/
public function logout(Request $request) {
$this->guard()->logout();
$request->session()->invalidate();
$request->session()->flash('errors', 'Vous êtes déconnecté');
if($request->ajax()) {
return Response::json(array(
'success' => true,
'data' => 'Vous êtes déconnecté'
));
}
else {
return redirect('/');
}
}

我想我错过了一些东西......

最佳答案

我的请求不是由 Ajax 执行的,因此我删除了 logout-form 表单,并监听了链接上的点击事件。

我的 ajax 函数中也存在语法错误,“error:”部分之前缺少“,”。

这是我的完整代码,没有多余的行:

注销按钮

@if (auth()->check())
<p>Vous êtes identifié en tant que <strong>{{ auth()->user()->name }} </strong>. <a id="logout_btn" href="#">Se déconnecter ?</a>
</p>
@endif

Ajax函数

<script>
// Ajax Logout
$('#logout_btn').click(function(e){

e.preventDefault();
var dest_url = "{{ url('/logout') }}";
$.ajax({
type:"POST",
url:dest_url,
headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
success: function(){
c = "success";
t = "Succès";
m = "Vous avez été déconnecté";
i = "icon-circle-check";
iziToast.show({
class:"iziToast-"+c||"",
title:t||"Sans titre",
message:m||"-",
animateInside:!1,
position:"topRight",
progressBar:!1,
icon:i,
timeout:9000,
transitionIn:"fadeInLeft",
transitionOut:"fadeOut",
transitionInMobile:"fadeIn",
transitionOutMobile:"fadeOut"
});
$('form[name="reservation"]').load(document.URL + ' form[name="reservation"]');
$('.toolbar .account').load(document.URL + ' .toolbar .account');

},
error: function(){
console.log('Erreur lors de la déconnection via Ajax');

c = "danger";
t = "Erreur";
m = "Une erreur s'est produite lors de la déconnection";
i = "icon-ban";
iziToast.show({
class:"iziToast-"+c||"",
title:t||"Sans titre",
message:m||"-",
animateInside:!1,
position:"topRight",
progressBar:!1,
icon:i,
timeout:9000,
transitionIn:"fadeInLeft",
transitionOut:"fadeOut",
transitionInMobile:"fadeIn",
transitionOutMobile:"fadeOut"
});
}
})
});
</script>

登录 Controller

/**
* Custom logout function with no redirect if ajax.
*
* @return void
*/
public function logout(Request $request) {
$this->guard()->logout();
$request->session()->invalidate();
if($request->ajax()) {
return Response::json(array(
'success' => true,
'data' => 'Vous êtes déconnecté'
));
}
else {
return redirect('/');
}
}

关于jquery - Laravel 5.5 Ajax 注销无重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51251405/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com