如何实现ajax 请求能自动跳转

新手提问 · wy1272086709 · 于 4年前 发布 · 4183 次阅读

希望在项目中实现 当发送ajax请求的时候,未登录的情况下,能跳转到首页

但是不希望每一个ajax请求,都在js 里面处理。有没有方法可以弄成通用的

一个JS在其他的地方都调用,并且最好只有一处调用。不用每个AJAX请求都做处理。

共收到 6 条回复
forecho#14年前 1 个赞

如果你使用的是 Yii2 的话你根本不用处理这些,你可以试一下在不登录的情况下给其他主题点赞的情况,会直接跳转到 登录页面。

代码看这里:beforeAction

@forecho #1楼 跳不了啊 确定可以跳么?用php的header针对ajax请求也不能跳转啊。
还是jQuery和YII的版本和你的不一样??

forecho#34年前 1 个赞

@wy1272086709 #2楼 GetYii 可以跳啊

4楼 已删除.

@forecho ,ajax 请求跳转,JS客户端要有这部分代码:(yii.js应该有类似的代码功能)

$(document).ajaxComplete(function (event, xhr, settings) {
        var url = xhr.getResponseHeader('X-Redirect');
         if (url) {
             window.location = url;
         }
    });
echo#64年前 0 个赞

也可以在控制器中这样实现:

public function beforeAction($action)
{
    if (Yii::$app->user->isGuest) {
        Yii::$app->getResponse()->redirect(\Yii::$app->getUser()->loginUrl)->send();
    }
    return parent::beforeAction($action);
}
yidashi#74年前 1 个赞

画蛇添足,框架本身逻辑就是没登录ajax请求抛出403异常,都403了,难道还不能根据403做相应的处理?

$(document).ajaxError
添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册