使用ajax重定向到Laravel中的特定页面
Posted
技术标签:
【中文标题】使用ajax重定向到Laravel中的特定页面【英文标题】:Redirect to a specific page in Laravel using ajax 【发布时间】:2019-08-04 02:16:37 【问题描述】:当用户单击按钮时,我创建了 ajax 功能,如果帐户已经确认,它将首先检查用户个人资料。如果没有,它将重定向回用户仪表板。但是,我现在的问题是页面没有显示或者没有重定向回来。结果只能在浏览器的网络标签中看到。
我的 ajax
$(document).on("click", "#apply", function()
$.ajaxSetup(
headers:
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
);
$.ajax(
type: "get",
url: '/checkstatus',
success: function(store)
if(store == 'confirmed')
$(".apply_modal").toggleClass("open").show();
$("body").toggleClass("open");
,
);
);
和我的控制器:
public function checkStatus(Request $request)
$verify = Auth::user()->verifyAccount();
if($verify == false)
if(session()->has('verify') && session()->get('verify') != '')
session()->forget('verify');
else
session()->flash('verify', 'At first, please update your profile!');
else
return 'confirmed';
如何正确地将用户重定向回其主页?现在的结果是这样的。
给用户的信息:
@if(session('verify'))
<div class="complete_box">
<p> session('verify') </p>
<a href=" url('/mypage') ">Close</a>
</div>
@endif
【问题讨论】:
【参考方案1】:$(document).on("click", "#apply", function()
$.ajaxSetup(
headers:
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
);
$.ajax(
type: "get",
url: '/checkstatus',
success: function(store)
if(store == 'confirmed')
$(".apply_modal").toggleClass("open").show();
$("body").toggleClass("open");
window.location.href = "store.url";
,
);
);
这里的 store.url 是响应的 url。
在控制器中
Craete a url and send in response.
【讨论】:
【参考方案2】:如果你使用 ajax,你不能通过控制器重定向。你需要使用 javascript
window.location.href = "your url";
window.location.href = "url('/mypage')";
$(document).on("click", "#apply", function()
$.ajaxSetup(
headers:
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
);
$.ajax(
type: "get",
url: '/checkstatus',
success: function(store)
if(store == 'confirmed')
$(".apply_modal").toggleClass("open").show();
$("body").toggleClass("open");
window.location.href = "your url";
,
);
);
用于 Flash 消息使用会话
public function checkStatus(Request $request)
$verify = Auth::user()->verifyAccount();
if($verify == false)
\Session::put('message','At first, please update your profile!');
return 'something you want';
else
return 'confirmed';
现在在要显示 flash 的刀片文件中放这个
@if(Session::has('message'))
<p class="alert alert-success">
!! Session::get('message') !!
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
</p>
@endif
【讨论】:
谢谢。它可以工作,但是,消息['verify' => 'At first, please update your profile!']
缺少它。我怎么能这样呢?
@EemJee 看看***.com/questions/282429/…,您的消息将被设置,然后在同一个请求中使用。你需要修改你的整体逻辑
@AkashKumarVerma 是的。提示用户必须更新个人资料。
@EemJee 请检查并验证如果您遇到任何问题请告诉我
谢谢@AkashKumarVerma 它有效。但是请检查我在向用户发送消息时的更新,单击关闭按钮时我的 url 是 /mypage
。我现在的问题是模式没有关闭。以上是关于使用ajax重定向到Laravel中的特定页面的主要内容,如果未能解决你的问题,请参考以下文章