2016-02-26 24 views
0

意識到在同一個問題上有很多問題,但他們都沒有工作。已嘗試將pushState true和hashChage設置爲false,但每次路由給我都無法獲取錯誤。這裏是我的路線文件骨幹js pushState給出了不能得到錯誤

var appRouter = Backbone.Router.extend({ 
routes:{ 
    "login":"login" 
}, 
login:function() { 
    var LoginView = Backbone.View.extend({ 
     initialize: function() { 
      this.render(); 
     }, 
     render: function() { 
      var that = this; 
      $.get('templates/login.html', function (data) { 
       template = _.template(data, {}); 
       that.$el.html(template); 
      }, 'html'); 
     } 
    }); 
    var loginView = new LoginView({ el: $("#test") }); 
}, 
}); 
var sys = new appRouter(); 
Backbone.history.start({pushState:true}); 
+0

什麼是完整的錯誤? –

+0

無法獲取/登錄。這是瀏覽器中唯一顯示的內容。控制檯中出現此錯誤無法加載資源:服務器響應狀態爲404(未找到)http:// localhost:9000/login –

+0

該URL是否存在? –

回答

0

你有沒有在你的HTML <a href="/login">一個鏈接?

您的瀏覽器將轉到此URL。

您需要防止發生這種情況。

閱讀this questiontop answer的方式來解決它。

這很好。但是,當我刷新頁面或直接點擊URL時,它會引發同樣的錯誤。任何方式來解決這個問題?

是的,但它會要求您更改Web服務器。

如果您可以添加重寫規則,則可以查找不存在的URL,並假定它們是推送狀態生成的並返回根頁面。

沒有看到您的應用程序的更多細節,很難說什麼是最好的解決方案。

+0

這很好。但是,當我刷新頁面或直接點擊URL時,它會引發同樣的錯誤。任何方式來解決這個問題? –

+0

你可以更改服務器嗎? –

+0

是的。我應該做什麼改變? –

0

正如Adrian所說,它通過點擊<a>標籤來解決請求問題。通過修改Adrian建議的htaccess文件,可以解決Direct Url命中和頁面刷新錯誤。在我的情況下,我已經修改gruntfile.js文件爲here