2011-09-21 31 views
5

我開始寫新的應用程序,並希望把它全Ajax風格的:)阿賈克斯+背部及前進按鈕

我使用jQuery使Ajax請求。 主JS文件從按下的鏈接獲取一些變量,並根據該鏈接去一些PHP文件抓取一些數據返回並將所有內容放入預先準備好的html標記中。

這是我看到這個應用程序的方式。

現在我發現了一些解決方案,使&前進按鈕開始工作,但在這些解決方案中,它們的腳本會前往預定義的頁面,並根據某些常量ID讀取一些數據。所以我不喜歡它。

我想要的是......

  1. 我需要一些代碼,這將阻止瀏覽器頁面重新加載,如果用戶按下後退,前進按鈕
  2. 記住瀏覽器的位置,所以如果我們在國家「 C'後面按下它給JS帶來一些值爲'B'的變量,然後JS轉到php並且說'B',這樣php就能理解準備哪些內容。給JS回饋內容,JS更新頁面,大家高興。

是否有解決方案,這將工作?

回答

2

我想你應該看看backbone.js http://documentcloud.github.com/backbone/。它有一個基於路由器的應用程序結構,其中每個路線實際上是一個不同的#編輯網址。

像這樣,當你有一個項目列表,你可以顯示它在路由/#itemsList,每個項目的詳細信息頁面可以在/#items/id。整個導航都是爲你處理的,你所要做的就是調用一些函數或者粘貼你想要運行的代碼。 (實施例適於http://documentcloud.github.com/backbone/#Router

var Workspace = Backbone.Router.extend({ 

    routes: { 
    "help":     "help", // #help 
    "item/:id":  "item", // #item/myItemId 
    "itemList": "list" // #itemList 
    }, 

    help: function() { 
    ... show help 
    }, 

    item: function(id) { 
    ... show single item with jQuery, Ajax, jQuery UI etc 
    }, 

    itemList: function(){ 
    ... show item list with jQuery, jQuery UI etc. 
    } 

}); 

www.myapp.com/#help - >幫助代碼

www.myapp.com/#item/32 - >項目ID爲32,這是在所捕獲item(id)函數和請求通過Ajax獲取數據

www.myapp.com/#itemList - >所有項目的列表,您可以在其中爲每個項目生成#item/id的鏈接。

+0

哇,這看起來不錯。我聽說過這個backbone.js的東西,但不知何故錯過了路由。現在我希望它明天就可以試試這個了:-) –

+0

我發現了一些錯誤,或者對於Model-View View-Model基於事件的通信來說文檔不清晰,但除此之外,一切爲我工作得很好;) –