이스케이프된 URL 매개 변수 가져오기
URL 매개 변수를 가져오고 JavaScript 오류 "잘못된 형식의 URI 시퀀스"를 출력하지 않고 이 검색 문자열을 지원할 수 있는 jQuery 플러그인을 찾고 있습니다.이를 지원하는 jQuery 플러그인이 없는 경우 이를 지원하려면 jQuery 플러그인을 변경하는 방법을 알아야 합니다.
?search=%E6%F8%E5
URL 파라미터의 디코딩 시 값은 다음과 같습니다.
æøå
(문자는 노르웨이어)
서버에 액세스할 수 없기 때문에 서버에서 아무것도 수정할 수 없습니다.
function getURLParameter(name) {
return decodeURI(
(RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]
);
}
여기의 코멘트나, 언급되지 않은 버그('null'이 아닌 'null'을 반환하는 등)를 수정한 내용을 다음에 나타냅니다.
function getURLParameter(name) {
return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null;
}
당신이 정말로 원하는 것은 jQuery URL 파서 플러그인입니다.이 플러그인을 사용하면 (현재 URL에 대한) 특정 URL 파라미터의 값을 얻을 수 있습니다.
$.url().param('foo');
로 하고 '키', '키', '키'로 호출하면 됩니다.param()
이렇게 논쟁 없이요.
$.url().param();
이 라이브러리는 현재 URL뿐만 아니라 다른 URL에서도 작동합니다.
$.url('http://allmarkedup.com?sky=blue&grass=green').param();
$('#myElement').url().param(); // works with elements that have 'src', 'href' or 'action' attributes
이것은 전체 URL 구문 분석 라이브러리이므로 지정된 포트나 경로, 프로토콜 등 URL에서 다른 정보를 얻을 수도 있습니다.
var url = $.url('http://allmarkedup.com/folder/dir/index.html?item=value');
url.attr('protocol'); // returns 'http'
url.attr('path'); // returns '/folder/dir/index.html'
다른 기능도 있으니 홈페이지에서 더 많은 문서와 예시를 확인하세요.
대부분의 경우 기능하는 이 특정 목적을 위해 사용자 고유의 URI 파서를 작성하는 대신 실제 URI 파서를 사용합니다.답변에 따라 다른 답변의 코드가 반환될 수 있습니다.'null'
null
빈 ( 「」 「」 「」 「」 에서는 동작하지 않습니다.?foo=&bar=x
모든 할 수 에 대한 쿼리를 합니다.)는 모든 파라미터를 한 번에 해석하여 반환할 수 없습니다.파라미터에 대한 URL 쿼리를 반복할 경우 작업을 반복합니다.
독자적인 URI 파서를 발명하지 말고 실제 URI 파서를 사용합니다.
jQuery를 싫어하는 사람들을 위해 순수 JS 플러그인 버전이 있습니다.
URL 파라미터가 무엇인지 알 수 없으며 파라미터에 포함된 키와 값을 가진 개체를 가져오려면 다음을 사용할 수 있습니다.
function getParameters() {
var searchString = window.location.search.substring(1),
params = searchString.split("&"),
hash = {};
if (searchString == "") return {};
for (var i = 0; i < params.length; i++) {
var val = params[i].split("=");
hash[unescape(val[0])] = unescape(val[1]);
}
return hash;
}
하고 URL을 getParameters()와 같은 합니다./posts?date=9/10/11&author=nilbus
★★★★
{
date: '9/10/11',
author: 'nilbus'
}
질문에서 훨씬 더 멀리 떨어져 있기 때문에 여기에 코드를 포함하지는 않지만, weareon.net는 URL의 매개 변수를 조작할 수 있는 라이브러리를 게시했습니다.
- 블로그 투고 : http://blog.weareon.net/working-with-url-parameters-in-javascript/
- 코드: http://pastebin.ubuntu.com/1163515/
브라우저 네이티브 로케이션을 사용할 수 있습니다.검색 속성:
function getParameter(paramName) {
var searchString = window.location.search.substring(1),
i, val, params = searchString.split("&");
for (i=0;i<params.length;i++) {
val = params[i].split("=");
if (val[0] == paramName) {
return unescape(val[1]);
}
}
return null;
}
그러나 다음과 같은 jQuery 플러그인이 있습니다.
999의 답변에 근거합니다.
function getURLParameter(name) {
return decodeURIComponent(
(location.search.match(RegExp("[?|&]"+name+'=(.+?)(&|$)'))||[,null])[1]
);
}
변경 사항:
decodeURI()
로 대체되었습니다.decodeURIComponent()
[?|&]
regexp의 선두에 추가됩니다.
대소문자를 구분하지 않도록 i 파라미터를 추가해야 합니다.
function getURLParameter(name) {
return decodeURIComponent(
(RegExp(name + '=' + '(.+?)(&|$)', 'i').exec(location.search) || [, ""])[1]
);
}
모든 답을 읽은 후 이 버전에는 파라미터를 플래그로 사용할 수 있는 +초 함수가 포함되었습니다.
function getURLParameter(name) {
return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)','i').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null;
}
function isSetURLParameter(name) {
return (new RegExp('[?|&]' + name + '(?:[=|&|#|;|]|$)','i').exec(location.search) !== null)
}
$.urlParam = function(name){
var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(top.window.location.href);
return (results !== null) ? results[1] : 0;
}
$.urlParam("key");
예를 들어, 임의의 파라미터 변수의 값을 반환하는 함수입니다.
function GetURLParameter(sParam)
{
var sPageURL = window.location.search.substring(1);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++)
{
var sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] == sParam)
{
return sParameterName[1];
}
}
}
URL이 다음과 같다고 가정하면 이 기능을 사용할 수 있습니다.
"http://example.com/ ? technology = jquery & byxample = jqueryboxample."
var tech = GetURLParameter('technology');
var blog = GetURLParameter('blog');
따라서 위의 코드 변수 "tech"는 값으로 "jQuery"가 되고 "blog" 변수는 "jqueryboxample"이 됩니다.
이런 용도로 jQuery를 사용하면 안 됩니다.
현대적인 방법은 Bower와 같은 패키지 매니저를 통해 재사용 가능한 작은 모듈을 사용하는 것입니다.
쿼리 문자열을 객체로 해석할 수 있는 작은 모듈을 만들었습니다.다음과 같이 사용합니다.
// parse the query string into an object and get the property
queryString.parse(unescape(location.search)).search;
//=> æøå
여기에는 많은 버그가 있고 regex 솔루션은 매우 느립니다.regex에 비해 동작 속도가 최대 20배 빠르고 심플한 솔루션을 찾았습니다.
/*
* @param string parameter to return the value of.
* @return string value of chosen parameter, if found.
*/
function get_param(return_this)
{
return_this = return_this.replace(/\?/ig, "").replace(/=/ig, ""); // Globally replace illegal chars.
var url = window.location.href; // Get the URL.
var parameters = url.substring(url.indexOf("?") + 1).split("&"); // Split by "param=value".
var params = []; // Array to store individual values.
for(var i = 0; i < parameters.length; i++)
if(parameters[i].search(return_this + "=") != -1)
return parameters[i].substring(parameters[i].indexOf("=") + 1).split("+");
return "Parameter not found";
}
console.log(get_param("parameterName"));
Regex는 be-all 및 end-all 솔루션이 아닙니다.이러한 유형의 문제에서는 단순한 문자열 조작이 훨씬 더 효율적으로 동작합니다.코드 소스
<script type="text/javascript">
function getURLParameter(name) {
return decodeURIComponent(
(location.search.toLowerCase().match(RegExp("[?|&]" + name + '=(.+?)(&|$)')) || [, null])[1]
);
}
</script>
getURLParameter(id)
또는getURLParameter(Id)
동일하게 동작: )
jQuery 코드 스니펫을 사용하여 URL에 저장된 동적 변수를 매개 변수로 가져와 스크립트에서 사용할 수 있는 JavaScript 변수로 저장합니다.
$.urlParam = function(name){
var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
if (results==null){
return null;
}
else{
return results[1] || 0;
}
}
example.com?param1=name¶m2=&id=6
$.urlParam('param1'); // name
$.urlParam('id'); // 6
$.urlParam('param2'); // null
//example params with spaces
http://www.jquery4u.com?city=Gold Coast
console.log($.urlParam('city'));
//output: Gold%20Coast
console.log(decodeURIComponent($.urlParam('city')));
//output: Gold Coast
function getURLParameters(paramName)
{
var sURL = window.document.URL.toString();
if (sURL.indexOf("?") > 0)
{
var arrParams = sURL.split("?");
var arrURLParams = arrParams[1].split("&");
var arrParamNames = new Array(arrURLParams.length);
var arrParamValues = new Array(arrURLParams.length);
var i = 0;
for (i=0;i<arrURLParams.length;i++)
{
var sParam = arrURLParams[i].split("=");
arrParamNames[i] = sParam[0];
if (sParam[1] != "")
arrParamValues[i] = unescape(sParam[1]);
else
arrParamValues[i] = "No Value";
}
for (i=0;i<arrURLParams.length;i++)
{
if(arrParamNames[i] == paramName){
//alert("Param:"+arrParamValues[i]);
return arrParamValues[i];
}
}
return "No Parameters Found";
}
}
다음과 같은 URL에서 JavaScript의 URL 파라미터를 가져오는 간단한 함수를 만들었습니다.
.....58e/web/viewer.html?page=*17*&getinfo=33
function buildLinkb(param) {
var val = document.URL;
var url = val.substr(val.indexOf(param))
var n=parseInt(url.replace(param+"=",""));
alert(n+1);
}
buildLinkb("page");
출력:18
혹시 localhost/index.xsp와 같은 URL을 알고 계시는지요?a=1#something이며 해시가 아닌 매개 변수를 가져와야 합니다.
var vars = [], hash, anchor;
var q = document.URL.split('?')[1];
if(q != undefined){
q = q.split('&');
for(var i = 0; i < q.length; i++){
hash = q[i].split('=');
anchor = hash[1].split('#');
vars.push(anchor[0]);
vars[hash[0]] = anchor[0];
}
}
@paulopenheim에 의한 응답에 대한 약간의 수정. 다른 파라미터 이름의 일부가 될 수 있는 파라미터 이름은 적절히 처리되지 않습니다.
예: "appenv" 및 "env" 파라미터가 있는 경우 "env" 값을 다시 지정하면 "appenv" 값을 선택할 수 있습니다.
수정:
var urlParamVal = function (name) {
var result = RegExp("(&|\\?)" + name + "=(.+?)(&|$)").exec(location.search);
return result ? decodeURIComponent(result[2]) : "";
};
이게 도움이 될지도 몰라.
<script type="text/javascript">
$(document).ready(function(){
alert(getParameterByName("third"));
});
function getParameterByName(name){
var url = document.URL,
count = url.indexOf(name);
sub = url.substring(count);
amper = sub.indexOf("&");
if(amper == "-1"){
var param = sub.split("=");
return param[1];
}else{
var param = sub.substr(0,amper).split("=");
return param[1];
}
}
</script>
언급URL : https://stackoverflow.com/questions/1403888/get-escaped-url-parameter
'programing' 카테고리의 다른 글
프로그램 종료 전에 malloc 후에 자유롭지 않으면 실제로 어떤 일이 일어날까요? (0) | 2022.12.21 |
---|---|
정의되지 않은 함수 mysql_connect() (0) | 2022.12.21 |
MySQL에서 사용 가능한 데이터 유형 나열 (0) | 2022.12.21 |
기존 콜백 API를 약속으로 변환하려면 어떻게 해야 합니까? (0) | 2022.12.11 |
상위 행을 삭제하거나 업데이트할 수 없음: 외부 키 제약 조건이 실패합니다. (0) | 2022.12.11 |