2012-09-21 69 views
3

我有我在我的本地站點在Firefox v15.0.1請求的URI的下面的示例,我已經刪除主機名以簡潔。History.js和url編碼

/search?cat=ngb%26b 

和一些分頁鏈接顯示在結果頁面上的href的這樣

?p=2&cat=ngb%26b 

是做下面的歷史請求在其上使用https://github.com/browserstate/History.js/它使用HTML5歷史爲它自己的click事件的狀態改變從我所知道的。 。

History.getState().url; 

網址History.getState()URL是下面給我,這是通過對點擊事件的異步功能:

/search?cat=ngb&b&p=2 

和歷史,然後調整瀏覽器的URI這個

/search?cat=ngb&b=undefined&p=2 

和我的異步操作失敗,因爲「貓」的參數是不正確現在。

我無法對來自getState()。url的整個結果進行URL編碼,因爲那樣做會不正確。

面對這種情況時,有沒有什麼我不知道需要做的?

任何幫助,將不勝感激。謝謝。

UPDATE: 我目前調試這一點,在看的的getState()函數返回的對象..它擁有具有正確編碼PARAMS中有一個「數據」對象屬性。

潛在地,我可以旋轉,然後將它們添加到我傳遞給我的函數的URL,而該函數會發出ajax請求(而不是將它傳遞給.url屬性),但在歷史記錄時,這聽起來不是一個好主意旨在處理HTML4的哈希URL回退。

回答

1

在這裏回答我自己的問題。

我有兩個問題在這裏,1與History.js和另一個在不正確的情況下使用JQuery.param,因爲它編碼任何你給它使它有效的URL使用。

要解決與History.js插件的一些問題,我發現這個有用的分支 https://github.com/hrunting/history.js/tree/encoded-uris 這仍然是一個開放的拉請求,但它幫了我很多 不幸的是它需要有重​​新打包修改過的文件和如果您需要,可以將它們縮小。

一旦發生了變化,我還在代碼中使用$ .param()在基於查詢字符串中的值構建的狀態對象中添加值。顯然,「ng%26b」的值已經被編碼了,參數被編碼爲%,所以它最終爲「ng%2526」。

希望這可能有助於未來的某個人。

謝謝