2011-07-22 36 views

回答

1

最簡單的 - 使用錨和hashchange事件修改URL的狀態(你喜歡mostly need a shiv for older browsers IE 6和7)。首次加載頁面時,解析哈希,並通過ajax加載需要的內容。 (庫的例子,以幫助該Ben Alman's jQuery bbq plugin。)你在這種情況下的URL看起來像這樣:

http://example.com/entry/point#/my/app%3Fq=1 

整潔 - 使用新history APIpushState的頁面改變for newer browsershashchange回退的瀏覽器,唐不支持新的HTML5優點。 (一個可以幫助你的庫的例子是Ben Lupton's History.js plugin)。您的新瀏覽器的URL看起來像這樣:

http://example.com/my/app?q=1 

,同時不支持新的API網址,瀏覽器就會看到hashchange URL。

Neatest - 使用完整的路由或MVC框架,不要重新發明輪子。例子包括,但不限於:

注意與新history API,你真的應該確保所有的您的網址實際上可以在沒有JavaScript的情況下訪問和使用。 (所以如果你把http://example.com/my/app?q=1推到歷史堆棧上,你應該可以在瀏覽器的地址欄中輸入該URL,然後去那裏。)

+0

謝謝大家如此快速的迴應。我不熟悉hashchange事件,它是JQuery特定的?我們在這裏使用dojo,我想他們使用dojo.hash()。通常,偵聽器綁定到hangchange事件,並且回調將處理邏輯以生成相應的數據。這與在ek_ny建議的URL中傳遞參數一樣,甚至沒有混淆哈希。但是現在這個哈希事情有什麼大驚小怪呢? –

+0

@David - 不,hashchange事件是一個瀏覽器事件,比如'click'或'focus'。你確實可以使用'dojo.hash'作爲hashchange事件(http://dojotoolkit.org/reference-guide/dojo/hash.html) - 我沒有看到任何帶有快速Google搜索的東西,它增加了對歷史API,但是對於Dojo來說,它不應該很難添加。 –

0

當然,使用get請求創建XmlHttpRequest並在url字符串上添加參數,就像調用頁面一樣。您需要使用JavaScript「製作」您的網址。

如果使用jQuery,您可以使用$ .get()方法。

如果使用本地DOM方法,則需要使用適當的url和回調來創建XMLHttpRequest。

0

如果你可以使用JSP,這將工作...

<body onload='initViaAjax();'> 
<div id='insertHTML'></div> 
<input id='passedID' type='hidden' value='<%=request.getParameter("id")%>'/> 

的的getParameter將與您的查詢字符串值ID進行填充。 onload事件可以訪問該值並在您的ajax調用中使用它。 ajax結果可以推入div標籤。