2017-05-25 09:09:44 3641次浏览 4条回答 0 悬赏 10 金钱

我们在做后台管理的情况下很多时候用到分栏,比如上面是导航栏(A区),左边是菜单栏(B区),右边是内容区域(C区),

那么我在点击B区的时候,对应的C区会加载内容进来,是以AJAX获取的内容;

现在问题来了,如果我AJAX获取的内容后台检测是需要权限或者需要登录的时候,就需要整个页面都跳转到登录页面去,如果后台直接用 redirect()
就不行的,因为他是AJAX获取过来的HTML页面
我试了直接使用:

echo "<script>window.location.href='{$url}';</script>";

这样可以跳转 但会影响到其它操作!

所以在这里请教一下,如果是AJAX获取的页面 他又需要检测权限跳转整个页面的情况下 ,怎么实现跳转呢?

  • 回答于 2017-05-25 09:19 举报

    一般的处理方法是ajax返回的数据都是按照一定格式的.
    类似{"code":0,"data":"html内容","message":""},
    在js上获取到数据要先判断code的值.执行不同的操作.
    比如需要跳转页面可以把code约定为2,data里面放跳转的url.

  • 回答于 2017-05-25 09:27 举报

    Ajax调用是在JS中跳转的,不是在Php中:

    $.ajax({
    	url:'/users/data-user',
    	type:'post',
    	dataType:'json',
    	data:{"_csrf": "<?= Yii::$app->request->getCsrfToken()?>"},
    	success:function(result){ 
    		if(result.error!=''){
    			alert('error:'+result.error);
    			location.href='users/index';//此处跳转页面
    		}else{
                            $('#userData').html(result.data);
    		}
    
    	},
    	error:function(xhr,txtStatus){
    
    	},
    	complete:function(xhr,txtStatus){
    	}
    });
    

    /users/data-user.php

    ......
    //返回错误信息$error,让前端进行跳转,为空则不跳转:
    return $this->asJason(['data'=>$data,'error'=>$error]);
    
  • 回答于 2017-05-25 09:50 举报

    知道thinkphp的ajaxReturn方法吗,根据请求头来确定返回格式

  • 回答于 2017-05-25 10:52 举报

    ajax请求过程中,服务端是没法做跳转的,这点要知道。并不是这里ajax请求server.php在server.php里面做判断,再跳转。这是浏览器不认的。

    一般情况做法是这样ajax请求server.php里面做了判断要跳转的网址会放到响应头或响应体返回给客户端,再客户端去处理URL跳转,比如:location.href

您需要登录后才可以回答。登录 | 立即注册
xjcallen
见习主管

xjcallen 东莞

注册时间:2017-01-10
最后登录:2022-06-30
在线时长:6小时36分
  • 粉丝0
  • 金钱175
  • 威望0
  • 积分235

热门问题