使用'& url ='+ encodeURIComponent(url);將URL從瀏覽器傳遞到服務器將對URL進行編碼,但在服務器解碼時,url的參數將被解釋爲單獨的參數,而不是單個url參數的一部分。Javascript:推薦將URL作爲url參數傳遞的方式是什麼?
推薦將url作爲url參數傳遞的方式是什麼?
使用'& url ='+ encodeURIComponent(url);將URL從瀏覽器傳遞到服務器將對URL進行編碼,但在服務器解碼時,url的參數將被解釋爲單獨的參數,而不是單個url參數的一部分。Javascript:推薦將URL作爲url參數傳遞的方式是什麼?
推薦將url作爲url參數傳遞的方式是什麼?
encodeURIComponent()應該工作。例如,
'&url=' + encodeURIComponent("http://a.com/?q=query&n=10")
產生
"&url=http%3A%2F%2Fa.com%2F%3Fq%3Dquery%26n%3D10"
(其不具有任何 '&' 或 '?' 中的值)。 當你的服務器獲取此URL,它應該能夠解碼,要獲得原文:
param["url"] = "http://a.com/?q=query&n=10"
我不知道你正在使用的服務器(例如Rails的,Django的,...),但應該在任何正常系統上「開箱即用」工作。
使用escape()對url進行編碼,它會對&符號進行編碼,以免發生。
使用'& url ='+ encodeURIComponent(url);將URL從瀏覽器傳遞到服務器將對URL進行編碼
是的,這就是你應該做的。 encodeURIComponent
是對輸入查詢字符串部分的文本值進行編碼的正確方法。
但是當它在服務器上解碼時,url的參數被解釋爲單獨的參數而不是單個url參數的一部分。
然後服務器確實非常破碎。如果真的發生了什麼,你需要在服務器端修復它。
代碼?
老實說,請使用Google URL Shortener。然後,您只需使用網址查詢字符串中的網址代碼即可:http://example.com/url/A7dh3
在您的應用程序中,取得該網址並預先填寫Google URL Shortener域名,然後執行重定向。這也通過Google Analytics向URL添加了跟蹤。這種方法有許多優點。只需簡短的代碼並添加追蹤數據。
我沒有嘗試它,但BASE64編碼/解碼也應該工作。
'escape'類似於'encodeURIComponent',但是會爲'+'字符和任何非ASCII字符產生錯誤的輸出。它不應該被使用。 – bobince 2009-11-15 16:21:38