2012-02-04 125 views
7

上Sammy.js 404我想在这里sammy.js定义一些路线是我的代码:根路径

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

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

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

+0

如果你得到一个404错误到您的网站的根目录,这听起来更像是一个服务器配置问题。你知道服务器默认文档设置为什么吗?在Apache中,这将是httpd配置文件中的DirectoryIndex指令。取决于服务器,它可以是index.html或index.htm。如果其中一个页面不存在,那么转到站点根目录将导致此错误,因为服务器不知道要提取哪个页面。如果那不是问题,那么我可能完全不了解这个问题。 – 2012-02-05 00:16:37

+0

当我的意思是404错误时,没有抱歉,它是从sammy.js返回的JavaScript错误。但我只知道如果我没有空白路由的路由设置,即this.get(“”,function(){}); – Ryan 2012-02-05 19:29:36

+0

啊...好吧。 404错误看起来像一个页面没有找到错误,但也许它不是在这种情况下。可能值得使用Fiddler2或Wireshark获取数据包捕获的内容。这可能是sammy.js试图拉低某些东西,但我不知道。希望你在那里找到答案 - 听起来像我不是那个拥有它的人。 – 2012-02-05 22:10:29

回答

7

为了处理不包含哈希初始请求,请你在你的路由

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

列表的底部提到空航线为了正常的链接网站上的工作,即链接到AJAX请求不处理,设置了一个哈希的路由你的锚元素和参数如下二进制文件(代码使用剃刀语法)

<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> 

现在创建一个路由,萨米发送到实际的URL

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