Sammy.js 404在根路径上

时间:2012-02-04 21:31:55

标签: javascript sammy.js

我正在尝试使用sammy.js定义一些路由,这是我的代码:

$.sammy("#main_content", function()
{
    this.get("#!/about", function()
    {
        // Code
    });

    this.get("#!/", function()
    {
        // Code
    });
}).run();

如果我转到www.mywebsite.com我总是收到404错误。我已尝试在this.get("", function() {});中添加一个空白路径,这似乎可以防止404错误,但是我的页面上没有正常的链接工作。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:8)

要处理不包含哈希的初始请求,请使用您在路径列表的底部中提到的空路径

/* Get Home view for empty hash URLs
*/
this.get("", function () {
    this.app.runRoute("get", "#Home");
});

为了使您网站上的普通链接正常工作,即指向AJAX请求无法处理的二进制文件的链接,请使用散列路由和参数设置您的锚元素,如下所示(代码使用Razor语法)

<a href="@Url.Content("#Reporting/Excel/" + 
Model.Report.Type.ToString() + "/" +
Model.Report.Audience.ToString() + "/" +
Model.Report.UnitID.ToString() + "/" +
Model.Report.DepartmentID.ToString())">Download Excel version</a>

现在为Sammy创建一条发送到实际网址的路线

/* Reporting Excel requests
*/
this.get("#Reporting/Excel/:type/:audience/:unitID/:departmentID", function () {
   location.assign("Report/Excel?" +
       "Type=" + this.params.type + "&" +
       "Audience=" + this.params.audience + "&" +
       "UnitID=" + this.params.unitID + "&" +
       "DepartmentID=" + this.params.departmentID
   );
});

答案 1 :(得分:5)

只是覆盖未找到:

this.notFound = function(){     // 做一点事   }

您可以在此处查看:https://github.com/quirkey/sammy/issues/67