[英]History.js and url encoding
我在Firefox v15.0.1中的本地站點上請求了下面的URI示例,為了簡潔起見,我刪除了主機名。
/search?cat=ngb%26b
並且在結果頁面上顯示了一些分頁鏈接,其中href是這樣的
?p=2&cat=ngb%26b
在他們的點擊事件上執行以下歷史記錄請求,該事件使用https://github.com/browserstate/History.js/ ,它使用HTML5歷史記錄,因為它的狀態發生了我所知道的變化。
History.getState().url;
url History.getState()。url給出了下面的內容,這是傳遞給click事件的異步函數:
/search?cat=ngb&b&p=2
然后歷史記錄將瀏覽器URI調整為此
/search?cat=ngb&b=undefined&p=2
而我的異步操作失敗,因為“cat”參數現在不正確。
我無法對來自getState()。url的整個結果進行URL編碼,因為這是不正確的。
在面對這種情況時,我是否缺少需要做的事情?
任何幫助,將不勝感激。 謝謝。
更新:我正在調試這個並查看getState()函數返回的對象..它有一個“數據”對象屬性,其中包含正確編碼的參數。
可能我可以旋轉,然后將它們添加到URL我傳遞給我的函數,該函數發出一個ajax請求(而不是傳遞它.url屬性)但是當歷史記錄意味着處理哈希時這聽起來不是一個好主意HTML4的網址回退。
在這里回答我自己的問題。
我在這里有兩個問題,一個是History.js,另一個是在不正確的情況下使用JQuery.param,因為它會對你提供的任何內容進行編碼,使其對URL使用有效。
為了修復History.js插件的一些問題,我發現這個有用的分支https://github.com/hrunting/history.js/tree/encoded-uris這仍然是一個開放的拉取請求,但它幫助了我很多不幸的是它確實需要重新捆綁更改的文件並在需要時縮小它們。
一旦改變了,我在代碼中也遇到了一個問題,即使用$ .param()在一個狀態對象中添加值,該狀態對象是根據查詢字符串中的值構建的。 顯然,“ng%26b”值已編碼,param編碼%,因此最終為“ng%2526”。
希望這可能會幫助將來的某個人。
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.