2012-02-04 122 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 
    ); 
});