在寫程式的時候,我們經常需要對頁面進行傳引數,比如page?id=1234,那麼在page這個頁面中就直接可以用
string id = request.querystring["id"];
來獲取引數id的值1234了。這是乙個人人都知道的基礎知識。
上面的方法:request.querystring,它會把傳入的url進行分析,並把結果儲存在乙個鍵值(key value)的collection中,我們只要通過設定key值,就可以返回這個key所對應的value了。
假設這個url不是通過請求進來的,我們是沒有辦法通過request來獲取url的引數值的,我們是否可以通過乙個字串string url = ""中分析出collection[key]=value呢?而且很多時候我們的url的引數都是經過urlencode編碼的,這個編碼通常來說會是encoding.utf8或者encoding.getencoding("gb2312"),需要提醒你的是:baidu的url是使用gb2312的,而google是使用utf8的。那對於傳入的字串我們如何確認是該使用gb2312還是utf8來解碼呢?
在baidu或者google搜尋到相關的解決辦法中,你會看到這樣的說法,那就是通過正規表示式去匹配url,例如:regex urlregex = new regex(@"(?:^|\?|&)courseid=(\d*)(?:&|$)"); 但是我比較懷疑通過這個方法分析出來的資料完整性,它有辦法確保匹配出所有資料嗎?後來我想到了模擬microsoft .net framework中request的方法來解決這個問題。其實上面的string id = request.querystring["id"]; 也可以寫成 system.collections.specialized.namevaluecollection col = request.querystring; string strid = col[」id」];所以讓我們來構造這個namevaluecollection吧!
code highlighting produced by actipro codehighlighter (freeware)>/// /// 測試.
///
public void test()
/// /// 將查詢字串解析轉換為名值集合.
///
///
///
public static namevaluecollection getquerystring(string querystring)
/// /// 將查詢字串解析轉換為名值集合.
///
///
///
///
///
public static namevaluecollection getquerystring(string querystring, encoding encoding, bool isencoded)
}else if (item == '&')
i++;
}string key = null;
string value = null;
if (index >= 0)
else
if (isencoded)
else
if ((i == (count - 1)) && (querystring[i] == '&'))}}
return result;
}/// /// 解碼url.
///
/// null為自動選擇編碼
說明
1.對於下面的編碼方式中,baidu是使用gb2312,而google是使用utf8的,所以這些編碼如何解釋呢?
解決辦法就是如myurldecode方法所寫的,把編碼
進行一次解碼,再把解碼後的字串進行編碼,再對字串進行比較,如果是相同的,那就是使用了這種編碼的。還要注意進行
toupper字串。
關於return
getquerystring(querystring,
null
, true
); 如果你傳入的是null,那就是表示你無法確認編碼是gb2312還是utf8,當你確認編碼的,可以直接傳入編碼型別,比如
return
getquerystring(querystring,
encoding.utf8
, true);
4.需要注意
querystring
=querystring.replace("?
", "");把?給過濾掉。
我在自己開發中使用了上面大神的**,利用ajax向後後台傳的資料為data: $("form").serialize(),
序列化form的資料在後台用上面的**解析出form裡的資料。
好文要頂
關注我收藏該文
js獲取url引數值
今天碰到要在乙個頁面獲取另外乙個頁面url傳過來的引數,一開始很本能的想到了用 split 這樣一步步的分解出需要的引數。後來想了一下,肯定會有更加簡單的方法的!所以在網上找到了兩個很又簡單實用的方法,mark下 方法一 正則分析法 function getquerystring name 這樣呼叫...
URL引數值獲取getQueryString
目錄介紹 實現 講解 獲取正常情況下的url是這樣的 這樣的?a 1 還有這樣的?a 1 ab 2 abc 3 abcd 4 沒錯,基本是key value的形式 function getquerystring name return 其中 name 的意思就是取以name開頭或者以 開頭以 或者以...
js獲取url引數值
今天碰到要在乙個頁面獲取另外乙個頁面url傳過來的引數,一開始很本能的想到了用 split 這樣一步步的分解出需要的引數。後來想了一下,肯定會有更加簡單的方法的!所以在網上找到了兩個很又簡單實用的方法,mark下 方法一 正則分析法 function getquerystring name 這樣呼叫...