2012-10-16 83 views
0

我有一個搜索表單,只要窗體中的某些內容發生更改,就會自動發送POST數據。 Web應用程序(用PHP/CodeIgniter編寫)接受POST或GET並返回正確的結果並將其顯示在頁面上。一切正常。哈希標記,查詢字符串和Ajax化搜索結果

現在,我擔心的是,URL並不反映獲取當前搜索結果所需的查詢參數。因此,如果某人複製了地址並分享了該地址,那麼點擊該網址的人將無法看到預期的數據。圖書標記等問題同樣存在問題

可以更新jQuery中的查詢字符串,但會強制瀏覽器重定向到新的URL(當它發生時,由於Web應用程序顯示正確的搜索結果實際上最初是寫給非JS工作的)。這種重定向意味着阿賈克斯化的努力被浪費了。

好像哈希#可以用來更新地址而不使瀏覽器重定向,但我似乎無法在非JS情況下使用該信息(我無法通過GET訪問該信息)。

我應該用什麼方法來解決這個問題?

+0

的可能重複【如何AJAX在github上源是做瀏覽?](http://stackoverflow.com/questions/9041872/ how-ajax-is-done-in-github-source-browse) – Quentin

回答

2

HTML5瀏覽器支持History pushState,它可以在不刷新頁面的情況下更新瀏覽器的URL。

var stateObj = { foo: "bar" }; 
history.pushState(stateObj, "page 2", "bar.html"); 

您可以添加對不支持瀏覽器的支持history.js

+0

對於非HTML5瀏覽器會發生什麼情況? – StackOverflowNewbie

+1

@StackOverflowNewbie - 讓他們回到非Ajax版本。 – Quentin

+0

@StackOverflowNewbie你可以使用當前搜索添加一個到你的頁面的鏈接,並告訴你的訪問者複製,而不是在酒吧中的URL –