如何将注销URL传递给服务器

时间:2013-08-02 12:00:06

标签: javascript sammy.js

我有一个简单的Sammy.js应用程序,如下所示:

Sammy(function () {
        this.get('#/project/:projectId', function () {
            // REST load content into div
        });

        this.get('#/', function () {
            // Load blank div
        });

        this.get('', function () {
            this.app.runRoute('get', '#/');
        });
    }).run();

这段代码运行得很好,要么通过restful方法加载内容,要么显示空白div。但是我的应用程序有一个MVC结构,我需要转到http://localhost/logout以确保应用程序将用户注销并终止会话。

但是,我的应用程序中指向注销网址的任何html链接都不会被调用。 URL栏显示注销URL,但注销操作不会发生。

我可以使用sammy捕获链接网址,如下所示:

this.get('logout', function () {
                // What should happen here?
            });

但我不确定如何让sammy真正称呼这个网址。我试过this.refresh()和this.get('/ logout')但是没有按预期工作。

2 个答案:

答案 0 :(得分:1)

我是Sammy的新手,当我遇到同样的错误时,我正在做一个教程。出于某种原因,get('',function()...)获取的所有url与其他url不匹配get方法,而只是匹配'empty'url。我这样解决了我的问题。

我在Sammy主页上看到了这一点:http://sammyjs.org/

Sammy(function () {
    this.get('#/project/:projectId', function () {
        // REST load content into div
    });

    this.get('#/', function () {
        // Load blank div
    });

    //remove this 
    //this.get('', function () {
    //    this.app.runRoute('get', '#/');
    //});
// put your initial url inside run
}).run("#/");

答案 1 :(得分:0)

实际上对我有用的代码,看起来很可怕,是标准的document.location.href:

var sammy = Sammy(function () {
            this.get('#/project/:projectId', function () {
                // does some stuff with knockout.js
            });

            this.get('#/', function () {
                // does some stuff with knockout.js
            });

            this.get('/logout', function () {
                document.location.href = './logout';
            });

            this.get('', function () {
                location.hash = '/';
            });
        });