使用js擷取QueryString

來源:互聯網
上載者:User

標籤:

本文PDF下載

      轉載請註明出處 

    從網上看到一些使用js擷取QueryString的方法,但用起來不是很理想,所以決定自己寫一個。主要原理是使用Regex匹配location.search中的字串。

三個主要方法:

方法

說明

getQueryString

擷取QueryString的數組。

例如路徑QueryStringDemo.html?id=5&type=1&flag=0

調用後返回["id=5", "type=1", "flag=0"]

getQueryStringByName

根據QueryString參數名稱擷取值

getQueryStringByIndex

根據QueryString參數索引擷取值

  

//擷取QueryString的數組

function getQueryString(){

     var result = location.search.match(new RegExp("[\?\&][^\?\&]+=[^\?\&]+","g")); 

     if(result == null){

         return "";

     }

     for(var i = 0; i < result.length; i++){

         result[i] = result[i].substring(1);

     }

     return result;

}

//根據QueryString參數名稱擷取值

function getQueryStringByName(name){

     var result = location.search.match(new RegExp("[\?\&]" + name+ "=([^\&]+)","i"));

     if(result == null || result.length < 1){

         return "";

     }

     return result[1];

}

//根據QueryString參數索引擷取值

function getQueryStringByIndex(index){

     if(index == null){

         return "";

     }

     var queryStringList = getQueryString();

     if (index >= queryStringList.length){

         return "";

     }

     var result = queryStringList[index];

     var startIndex = result.indexOf("=") + 1;

     result = result.substring(startIndex);

     return result;

}

測試頁面路徑:QueryStringDemo.html?id=5&type=1&flag=0

頁面載入時:

 

在QueryString‘s name後的文字框中輸入要擷取的QueryString的名稱擷取相應的值:

 

在QueryString‘s index後的文字框中輸入要擷取的QueryString的索引擷取相應的值(索引從0開始):

 

這樣就可以在頁面中方便的擷取QueryString的值了。最後附上測試頁面QueryStringDemo.html的原始碼:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

 

<head>

<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />

<title>QueryString擷取</title>

<!--script type="text/javascript" src="CommonFiles/sunnycoder.js"></script-->

<script type="text/javascript">

     //擷取QueryString的數組

     function getQueryString(){

         var result = location.search.match(new RegExp("[\?\&][^\?\&]+=[^\?\&]+","g"));

         for(var i = 0; i < result.length; i++){

              result[i] = result[i].substring(1);

         }

         return result;

     }

     //根據QueryString參數名稱擷取值

     function getQueryStringByName(name){

         var result = location.search.match(new RegExp("[\?\&]" + name+ "=([^\&]+)","i"));

         if(result == null || result.length < 1){

              return "";

         }

         return result[1];

     }

     //根據QueryString參數索引擷取值

     function getQueryStringByIndex(index){

         if(index == null){

              return "";

         }

         var queryStringList = getQueryString();

         if (index >= queryStringList.length){

              return "";

         }

         var result = queryStringList[index];

         var startIndex = result.indexOf("=") + 1;

         result = result.substring(startIndex);

         return result;

     }

     //綁定當控制項高亮選中時,點擊“斷行符號鍵”時執行的操作

     //control:要綁定事件的控制項

     //func:要執行的方法

     function bindEnterEvent(control, func){

         control.onkeypress = function(){

              if (event.keyCode == 13){

                   func();

              }

         }

     }

     //根據輸入的QueryString名稱擷取值

     function getByName(){

         var name = document.getElementById("txtQueryStringName").value;

         document.getElementById("txtResult").innerHTML = getQueryStringByName(name);

     }

     //根據輸入的QueryString的索引擷取值

     function getByIndex(){

         var index = document.getElementById("txtQueryStringIndex").value;

         document.getElementById("txtResult").innerHTML = getQueryStringByIndex(index);

     }

</script>

</head>

 

<body>

 

<div>

     <span>QueryString : </span><span id="queryString"></span>

</div>

<div>

     <span>QueryString‘s name :&nbsp;</span>

     <input id="txtQueryStringName" name="txtQueryStringName" type="text" />

     <input name="btnGetByName" type="button" value="擷取" onclick="getByName()" />

</div>

<div>

     <span>QueryString‘s index : </span>

     <input id="txtQueryStringIndex" name="txtQueryStringIndex" type="text" />

     <input name="btnGetByIndex" type="button" value="擷取" onclick="getByIndex()" />

 

</div>

<div>

     <span>結果 :</span><span id="txtResult"></span>

</div>

<!--頁面載入時執行的操作-->

<script type="text/javascript">

     //顯示所有QueryString

     document.getElementById("queryString").innerHTML = getQueryString();

     //為txtQueryStringName綁定斷行符號事件

     bindEnterEvent(txtQueryStringName, getByName);

     //為txtQueryStringIndex綁定斷行符號事件

     bindEnterEvent(txtQueryStringIndex, getByIndex);

</script>

</body>

 

</html>

 文章來源:使用js擷取QueryString

使用js擷取QueryString

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.