1

我正在使用带有backbonejs的jqueryMobile。任务:带有电子邮件和密码字段的登录表单。填写表格并使用 3 个链接重定向到相同的表格:

  • 更新个人信息
  • 更改密码
  • 登出

问题:单击注销时,我希望将其重定向回登录表单(同一页面)并显示消息-“已成功注销”。

我做了什么:在 view.js 中:

$('#logoutClick').click(function() {
        console.log("hi");
        this.collection = new Fan();
        this.collection.logoutFan();
        window.location.reload(true);
    });

在 myController(of cakephp) 中:

public function mobile_logout() {
    $status = true;
    $event = array();
    $data = array();

    $this->Auth->logout();
    $this->Session->setFlash('Successfully Logged out', 'flash_failure');
    $this->Session->delete('Auth.Fan');

    $this->set('status',$status);
    $this->set('output',$data);
    $this->render('/Layouts/json/mobile',false);
}

现在,当我单击注销时,页面被重定向但消息未呈现。(我猜页面在获取响应之前重新加载)。当我检查 chrome 中的元素时,我可以看到 logout.json 没有可用的预览(来自控制器的 json 响应不存在)。我该如何解决这个问题?

4

2 回答 2

0

不要重新加载。使用重定向:window.location = 'yourloginpage?msg=success';

于 2012-12-11T06:37:24.773 回答
0

由于 jQuery mobile 模拟一个大网页,因此您无法引用其他页面。使用:

window.location.reload(true);

打开一个新视图,jQM 再次开始工作(它下载所有头文件等)。它的工作方式类似于带有 rel="external" 的链接

如果您想让 jQM 在这种情况下继续工作,您必须将所有标题添加到您的 html 文件中,并且您应该知道您不能引用上一页,因为它已从 DOM 中删除。

我做了一些不同的方式。它并不完美:) 尝试使用 . 重定向到另一个页面$.mobile.changePage("./newpage.html)。在这个新页面中添加事件pageinit并重定向回起始页面。

于 2012-12-11T07:21:06.787 回答