1

私はbackbonejsでjqueryMobileを使用しています。タスク: 電子メールとパスワード フィールドを含むログイン フォーム。フォームに入力し、3 つのリンクを含む同じフォームにリダイレクトします。

  • プロフィールを更新する
  • パスワードを変更
  • ログアウト

問題: ログアウトをクリックすると、ログイン フォーム (同じページ) にリダイレクトされ、「正常にログアウトされました」というメッセージが表示されます。

私がしたこと:view.jsで:

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

(cakephp の) myController で:

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);
}

ログアウトをクリックすると、ページはリダイレクトされますが、メッセージはレンダリングされません(応答を取得する前にページがリロードされると思います)。クロムの要素を調べると、使用可能なプレビューがない logout.json が表示されます (コントローラーからの json 応答がありません)。どうすればこれを解決できますか?

4

2 に答える 2

0

jQuery mobileは1つの大きなWebページをシミュレートするため、別のページを参照することはできません。使用:

window.location.reload(true);

新しいビューを開き、jQMが再び動作を開始します(すべてのヘッダーファイルなどをダウンロードします)。rel="external"とのリンクのように機能します

このような場合にjQMを機能させ続けたい場合は、すべてのヘッダーをhtmlファイルに追加する必要があります。また、DOMから削除されているため、前のページを参照できないことに注意してください。

私はそれをいくつかの異なる方法で行いました。完璧ではありません:)を使用して別のページにリダイレクトしてみてください$.mobile.changePage("./newpage.html)。この新しいページでイベントpageinitを追加し、スタートページにリダイレクトします。

于 2012-12-11T07:21:06.787 に答える
0

リロードしないでください。リダイレクトを使用します: window.location = 'yourloginpage?msg=success';

于 2012-12-11T06:37:24.773 に答える