我需要使用ajax驅動的網頁,所以我可以在URL中傳遞一個id或id,它只會顯示基於id的結果(s) (ids)傳入。對於舊的cgi頁面,我可以這樣做:http://myurl?id=1, 有沒有對Ajax頁面執行此操作的方法? 謝謝,如何生成一個永久的URL到Ajax動態網頁
大衛
我需要使用ajax驅動的網頁,所以我可以在URL中傳遞一個id或id,它只會顯示基於id的結果(s) (ids)傳入。對於舊的cgi頁面,我可以這樣做:http://myurl?id=1, 有沒有對Ajax頁面執行此操作的方法? 謝謝,如何生成一個永久的URL到Ajax動態網頁
大衛
最簡單的 - 使用錨和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
API到pushState
的頁面改變for newer browsers和hashchange
回退的瀏覽器,唐不支持新的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,然後去那裏。)
當然,使用get請求創建XmlHttpRequest並在url字符串上添加參數,就像調用頁面一樣。您需要使用JavaScript「製作」您的網址。
如果使用jQuery,您可以使用$ .get()方法。
如果使用本地DOM方法,則需要使用適當的url和回調來創建XMLHttpRequest。
如果你可以使用JSP,這將工作...
<body onload='initViaAjax();'>
<div id='insertHTML'></div>
<input id='passedID' type='hidden' value='<%=request.getParameter("id")%>'/>
的的getParameter將與您的查詢字符串值ID進行填充。 onload事件可以訪問該值並在您的ajax調用中使用它。 ajax結果可以推入div標籤。
謝謝大家如此快速的迴應。我不熟悉hashchange事件,它是JQuery特定的?我們在這裏使用dojo,我想他們使用dojo.hash()。通常,偵聽器綁定到hangchange事件,並且回調將處理邏輯以生成相應的數據。這與在ek_ny建議的URL中傳遞參數一樣,甚至沒有混淆哈希。但是現在這個哈希事情有什麼大驚小怪呢? –
@David - 不,hashchange事件是一個瀏覽器事件,比如'click'或'focus'。你確實可以使用'dojo.hash'作爲hashchange事件(http://dojotoolkit.org/reference-guide/dojo/hash.html) - 我沒有看到任何帶有快速Google搜索的東西,它增加了對歷史API,但是對於Dojo來說,它不應該很難添加。 –