【发布时间】:2019-01-21 03:46:20
【问题描述】:
我正在开发一个用户可以加入群组的系统。如果满足这两个条件,用户可以发出ajax请求
- 他必须登录
- 他之前没有加入这个房间
我目前正在会话中保存错误消息。如果用户未登录,我想在视图中执行特定任务,否则如果用户已经加入组,我想在视图中执行特定任务。
这是我在控制器方法之前运行的身份验证代码
public function authorize()
{
//authorize that user must be logged in
if(session()->get('uid')!=NULL){
//authorize that user must not join this group before
$status=Usergroup::where(['user_id'=>session()->get('uid'),
'group_id'=>$this->chamber_id])->exists();
if($status){
session()->put('join_group_auth_error','already_joined');
return false;
}
else{
return true;
}
}
else{
session()->put('join_group_auth_error','not_login');
return false;
}
}
这是ajax请求
function joinChamber(chamber_id){
$.ajax({
headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },
url:'{{route('join.group')}}',
type:'post',
data:{group_id:group_id},
success:function(response,status){
if(response=='joined'){
$("#joinbuttondiv-"+chamber_id).html('<span
class="bodybadge">Joined</span>');
}},
error:function(response){
if(response.status==403){
@if(session()->get('join_group_auth_error')=='not_login')
{{session()->forget('join_group_auth_error')}}
openRegisterModal();
@elseif(session()-
>get('join_group_auth_error')=='already_joined')
{{session()->forget('join_group_auth_error')}}
alert('You have already joined this group.');
window.location=window.location.href;
@endif
}
}
});
这个系统可以正常工作,但不是每次都可以。 例如,我在视图中,我必须从中发出 ajax 请求,但我没有登录。当我点击加入按钮时,什么都没有发生,但是当我点击刷新页面后加入按钮它发生了我想要的。 这是什么原因。 还告诉我这是执行此操作的确切方法吗?
【问题讨论】:
-
Ajax 无法重新加载问题所在的页面
-
无需重新加载页面。实际上,在刷新页面后,我再次单击加入按钮,然后它就可以正常工作了。
-
你能告诉我控制台日志错误吗??
-
这是一个状态为 403 的错误。POST localhost/webproject/public/thegroup/joingroup 403 (Forbidden)
标签: php ajax laravel laravel-5.2