window.reload在获取响应之前重新加载

时间:2012-12-11 06:33:20

标签: cakephp jquery-mobile backbone.js

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

  • 更新个人资料
  • 改变pwd
  • 注销

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

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

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

在myController中(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响应不存在)。 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

window.location.reload(true);

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

如果你想让jQM在这种情况下工作,你必须将所有标题添加到你的html文件中,你应该知道你不能访问上一页,因为它是从DOM中删除的。

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