2011-10-05 19 views
0

我要在提出請求時檢查cookie是否存在。問題在於Cookie值例如在其中具有「=」。值爲「=」的Cookie

....;用戶名=名字=相約; ....

這裏cookie的名稱爲 「用戶名」 和Cookie值是 「名字=相遇」。問題是,當我嘗試從document.cookies獲取cookie時。在使用「;」的分割函數分解結果之後,我得到所有的cookie。

爲了獲取值,我將每個值按「=」分解/分割,然後這個cookie值即將到達firstName。

任何想法,我可以得到整體價值作爲firstName = Meet。

感謝, 符合

回答

2
// when you get a cookie string: 
unescape(cookieData); 
// when you set a cookie string: 
escape(yourString); 
0

如果cookie被服務器端的設置,則需要進行urlencode的價值,就好像它是一個查詢字符串。如果你用setcookie使用PHP,這應該自動爲你完成。實際上,任何一個像樣的圖書館都應該爲你自動編碼cookie值。

cookie值可能已被設置爲username = firstName = Meet的唯一方法是如果您手動發送Set-Cookie頭。

如果您首先提供有關如何設置cookie的更多信息,那將有助於提供更準確的答案。

0

從document.cookies中查找已知格式的單個cookie有幾種選擇。這是使用正則表達式的簡化情況。

var expr = /(?:^|;)username=([^;]+)/i; //match "username=some_string_that_string_may_have_more=_in_it". Capture the part after the leading =. Does not capture the trailing ; 
var cookie_match = document.cookie.match(expr); 
var cookie_val; 

if (cookie_match) { 
    cookie_val = cookie_match[1]; 
} 

//result should be cookie_val = "firstName=Meet" 

當然,你可以得到所有cookie,document.cookie分解,爲你做以上,如果您採集了大量的餅乾或寫入一個cookie訪問的包裝,這是個好主意。只要記住的是,使用子餅乾的時候,餅乾看起來像:

cookiename=cookiekey=cookievalue&key2=val2; 

你想使用正則表達式或切片/的indexOf以確保你只拆分第一個等號每個單獨的cookie 。然後,您可以首先分開&,然後在=上分開單獨的名稱/值對,如果您需要該級別的詳細信息。