2010-06-19 67 views
0

我有一個令人費解的問題,試圖製作一個Ajax /靜態程序。我想要做的是允許一個靜態鏈接的應用程序有Ajax動態URL和一切都很好,直到頁面刷新。夫婦PHP與AJAX國

問題:

PHP不會看到哈希所以它只能看到原始的URI請求。所以PHP加載原始頁面,但隨後JQuery(Javascript)用#之後我想要的實際替換頁面。例如:

!網址:本地主機/ index.php文件#/搜索

這是好的導航到該頁面,但按刷新PHP無二:

網址:本地主機/ index.php的

然後JavaScript的無二:

網址:#!/搜索

所以我實際加載兩頁......這吮吸。

這是一個必須發生的問題,我注意到Facebook已經做到了這一點,以幫助加載時間(同樣的原因,我想這樣做)。從最好的我可以告訴他們能夠可靠地檢測到散列,並用它的內容替換$ _SERVER ['REQUEST_URI'],所以當你刷新時你可以從localhost/index.php#!/ search獲取localhost/search。

我想知道是否有人對此有一點修補。我看過服務器端的JavaScript,但經過大量的谷歌搜索,我沒有真正得到清晰的圖片。

在此先感謝

+0

我忘了補充說cookie在這種情況下不起作用。如果用戶不通過網站順序移動,他們將看到他們不想要的頁面。 – sammaye 2010-06-19 16:47:18

回答

0

瀏覽器本身,當它發出請求甚至不發送URL的哈希部分。您仍然需要加載兩個頁面。您可以做的最好的做法是使最初加載的頁面成爲一個簡單的靜態HTML Ajax引導程序。通過這種方式,初始頁面負載可以緩存,輕鬆訪問資源,並且可以快速加載。

+0

是的,這是我在想什麼,我想我有點希望有一個更好的方法。我最初想到在我的php之前運行javascript,它不會在頁面上留下印記(在html標籤之上),但是啓動程序似乎是唯一的方式,我會留下這個開放時間更長一些,因爲有人有任何其他的想法 – sammaye 2010-06-19 17:23:30

+0

好吧,用我描述的方式創建一個靜態頁面,從技術上說,您在PHP之前運行您的JavaScript(根本不是在HTML文檔被渲染之前)。但我知道你的意思。我也很好奇,但值得懷疑的是,還有另一種方式。 – 2010-06-19 17:53:14

+0

你有沒有像樣的引導程序的例子鏈接,因爲我似乎無法讓我的JavaScript在手動運行而無需刷新頁面。我的大腦不斷被php和javascript之間的分層混淆。 – sammaye 2010-06-19 18:22:46