2017-02-13 5 views
0

URL에서 두 개의 매개 변수를 가져와야하고 기호 또는 공백이 유용합니다 (&). 검색 문자열의 일부로두 개의 URL 매개 변수 가져 오기 - 기호를 보존해야합니다.

예 : mysite.com?param1=Bower & Wilkins?param2=Speakers

내가 바우어 & 윌킨스가 두 번째 매개 변수를 얻기를위한 명백한 기호를 포함 실현,하지만 난 그게 뭔가로 교체 할 수 있습니까? 이 기능을하려고 할 때

쉽게 하나의 매개 변수를 반환 할 수 있습니다

URL: mysite.com?param1=Bower%20&%20Wilkins 

function getQueryStringValue(key) { 
    return decodeURIComponent(window.location.search.replace(new RegExp("^(?:.*[&\\?]" + encodeURIComponent(key).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^]*))?)?.*$", "i"), "$1")); 
} 
var param1 = getQueryStringValue("param1"); // Bower & Wilkins 

가 어떻게 두 번째 매개 변수를 얻을 수와 내가 어떻게 URL을 구성해야합니다. 두 번째 매개 변수를 나열하는 데 & 이외의 다른 기호를 사용할 수 있습니까?

내가해야 할 일 : PARAM 내

var param1 = getQueryStringValue("param1"); // Bower & Wilkins

var param2 = getQueryStringValue("param2"); // Speakers

+0

은 [이]처럼 보이는이 (http://stackoverflow.com/questions/16622504/escaping-ampersand-in-url) 비슷한 질문 같은 것을 시도 할 수있는 결과를 얻으려면 . –

답변

0

&%26로 인코딩 할 필요가있다. 즉, encodeURI를 통해 매개 변수를 실행하거나 값에 encodeURIComponent를 사용하기 전에 을 대체해야합니다.

입력은 "mysite.com?param1=Bower%20%26%20Wilkins&param2=Speakers"이어야합니다.

당신이

function getQueryStringValue(url, key) { 
    var params = {}; 
    var url_params = url.split("?", 2); 
    if (url_params.length > 1) { 
     var param_list = url_params[1].split("&"); 
     param_list.map(function (param_str) { 
      var kv = param_str.split("=", 2); 
      params[kv[0]] = kv[1]; 
     }); 
    } 
    return (key in params)? decodeURIComponent(params[key]) : '' 
} 

var url = "mysite.com?param1=Bower%20%26%20Wilkins&param2=Speakers"; 
console.log("Bower & Wilkins" === getQueryStringValue(url, "param1")); 
console.log("Speakers" === getQueryStringValue(url, "param2")); 
console.log("" === getQueryStringValue(url, "param3")); 
+0

이것은 효과가 있으며 필요한 것을 제공합니다. 감사! –