【问题标题】:Redirect to action/page LightVC PHP?重定向到动作/页面 LightVC PHP?
【发布时间】:2015-01-03 07:34:29
【问题描述】:

简而言之,我正在尝试登录我的网站并在成功后显示不同的页面。流程是用户填写表单并提交,我使用 jquery $.post() 将数据发布到控制器的 actionLogin。然后在 actionLogin 中,我验证用户并使用header('dashboard/1') 重定向到另一个页面,其中仪表板是同一控制器中的另一个操作,1 是用户的 ID。我的问题是来自 actionDashboard 的页面实际上并没有呈现。用户卡在登录页面上,我只在我的 jquery $.post 响应中获取仪表板的视图代码,所以当我登录时我可以在控制台中看到它。有任何想法吗?我正在使用LightVC。这是下面的简化代码:

ma​​in.js

$.post('/default/ajaxLogin', {
    email: $('#email').val(), 
    pass: $('#pass').val()
}, function(response) {
    console.log(response);
});

default.php(控制器)

//we start here where we can use main.js
public function actionIndex() 
{
    $this->setLayout('default');
    $this->setLayoutVar('pageTitle', 'Home');
}    
public function actionAjaxLogin() 
{ 
    //do some login verification
    //ok login successful, now redirect to dashboard
    header('Location: /dashboard/1');
}
public function actionDashboard($userId)
{
    $this->setLayout('dashboard');
    $this->setLayoutVar('pageTitle', 'Dashboard');
    $this->loadView('default/dashboard');
}

就像我说的,由于某种原因,页面实际上并没有呈现。我只在 main.js 的响应中恢复了 html。我从涉及 Yii 和 Laravel 的其他问题中看到了很多想法,但对于我的特定问题或 LightVC 框架却没有。有什么想法吗?

谢谢!

【问题讨论】:

    标签: php jquery redirect model-view-controller login


    【解决方案1】:

    我觉得当您使用 Ajax 帖子并期望它重定向到不同的页面时,这似乎是不可能的,因为 ajax 请求期望得到响应并在客户端的回调中进行处理。

    我认为您应该尝试删除代码的标题行并仅呈现仪表板布局。

    你可以试试下面修改后的代码看看

    //we start here where we can use main.js
    public function actionIndex() 
    {
        $this->setLayout('default');
        $this->setLayoutVar('pageTitle', 'Home');
    }    
    public function actionAjaxLogin() 
    { 
        //do some login verification
        //ok login successful, now redirect to dashboard
        $this->actionDashboard(1);
        //header('Location: /dashboard/1');
    }
    public function actionDashboard($userId)
    {
        $this->setLayout('dashboard');
        $this->setLayoutVar('pageTitle', 'Dashboard');
        $this->loadView('default/dashboard');
    }
    

    【讨论】:

    • 我试着像你所说的那样调用这个动作,但它给出了相同的结果。我相信您可能对 ajax 无法做到这一点是正确的。我可能只需要定期提交,看看会发生什么。我会让你知道。谢谢!
    • 是的,请让我知道并更新我以获得任何进一步的帮助... :)
    • 有效!谢谢你的帮助!只是回顾一下那里的任何其他人,在 MVC 框架中使用 $.post 提交不允许您重定向到不同的页面,因为它基本上需要响应并拦截 html。因此,它不允许页面实际更改。
    猜你喜欢
    • 1970-01-01
    • 2013-06-12
    • 2017-05-01
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多