JavaScript에서 GET 파라미터를 취득하는 방법
고려사항:
http://example.com/page.html?returnurl=%2Fadmin
위해서js
이내에page.html
를 취득하려면 ,GET
파라미터?
위의 간단한 예에서는func('returnurl')
그래야 한다/admin
.
하지만 복잡한 쿼리 문자열에도 사용할 수 있습니다.
window.location 객체를 사용합니다.이 코드는 물음표 없이 GET을 제공합니다.
window.location.search.substr(1)
이 예에서는 이 값이 반환됩니다.returnurl=%2Fadmin
편집: 저는 Qwerty의 답변을 바꿨습니다.그것은 정말 훌륭합니다.그리고 그가 지적한 것처럼 저는 OP가 질문한 것을 정확히 따랐습니다.
function findGetParameter(parameterName) {
var result = null,
tmp = [];
location.search
.substr(1)
.split("&")
.forEach(function (item) {
tmp = item.split("=");
if (tmp[0] === parameterName) result = decodeURIComponent(tmp[1]);
});
return result;
}
나는 그의 코드에서 중복된 함수 실행을 삭제하고 변수(tmp)를 대체하며 OP가 요구한 대로 추가했습니다.이것이 보안상의 문제인지 아닌지는 잘 모르겠습니다.
또는 IE8에서도 동작하는 플레인 for 루프를 사용하는 경우도 있습니다.
function findGetParameter(parameterName) {
var result = null,
tmp = [];
var items = location.search.substr(1).split("&");
for (var index = 0; index < items.length; index++) {
tmp = items[index].split("=");
if (tmp[0] === parameterName) result = decodeURIComponent(tmp[1]);
}
return result;
}
window.location.search
?부터 모든 것이 반환됩니다.다음 코드는 ?를 제거하고 분할을 사용하여 키/값 배열로 구분한 다음 명명된 속성을 params 개체에 할당합니다.
function getSearchParameters() {
var prmstr = window.location.search.substr(1);
return prmstr != null && prmstr != "" ? transformToAssocArray(prmstr) : {};
}
function transformToAssocArray( prmstr ) {
var params = {};
var prmarr = prmstr.split("&");
for ( var i = 0; i < prmarr.length; i++) {
var tmparr = prmarr[i].split("=");
params[tmparr[0]] = tmparr[1];
}
return params;
}
var params = getSearchParameters();
그런 다음 테스트 매개 변수를http://myurl.com/?test=1
부름으로써params.test
.
vanilla JavaScript를 사용한 코드 한 줄의 tl;dr 솔루션
var queryDict = {}
location.search.substr(1).split("&").forEach(function(item) {queryDict[item.split("=")[0]] = item.split("=")[1]})
이것이 가장 간단한 해결책입니다.유감스럽게도 다중값 키 및 인코딩된 문자는 처리되지 않습니다.
"?a=1&a=%2Fadmin&b=2&c=3&d&e"
> queryDict
a: "%2Fadmin" // Overridden with the last value, not decoded.
b: "2"
c: "3"
d: undefined
e: undefined
다중값 키와 인코딩된 문자를 선택하십시오.
"How can I get query string values in JavaScript?"의 원답을 참조하십시오.
"?a=1&b=2&c=3&d&e&a=5&a=t%20e%20x%20t&e=http%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dståle%26car%3Dsaab&a=%2Fadmin"
> queryDict
a: ["1", "5", "t e x t", "/admin"]
b: ["2"]
c: ["3"]
d: [undefined]
e: [undefined, "http://w3schools.com/my test.asp?name=ståle&car=saab"]
이 예에서는 다음과 같은 값에 액세스합니다.
"?returnurl=%2Fadmin"
> qd.returnurl // ["/admin"]
> qd['returnurl'] // ["/admin"]
> qd.returnurl[0] // "/admin"
URL 및 URLearchParams 네이티브 함수를 사용해야 합니다.
let url = new URL("https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8&q=mdn%20query%20string")
let params = new URLSearchParams(url.search);
let sourceid = params.get('sourceid') // 'chrome-instant'
let q = params.get('q') // 'mdn query string'
let ie = params.has('ie') // true
params.append('ping','pong')
console.log(sourceid)
console.log(q)
console.log(ie)
console.log(params.toString())
console.log(params.get("ping"))
https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams https://polyfill.io/v2/docs/features/
보다 세련된 방법::)
var options = window.location.search.slice(1)
.split('&')
.reduce(function _reduce (/*Object*/ a, /*String*/ b) {
b = b.split('=');
a[b[0]] = decodeURIComponent(b[1]);
return a;
}, {});
이것은 정규 표현을 사용하며 파라미터가 존재하지 않거나 값이 없는 경우 null을 반환합니다.
function getQuery(q) {
return (window.location.search.match(new RegExp('[?&]' + q + '=([^&]+)')) || [, null])[1];
}
다음과 같이 실행합니다(특정 get-parameter를 취득하려면 여기서 'parameterName').
var parameterValue = decodeURIComponent(window.location.search.match(/(\?|&)parameterName\=([^&]*)/)[2]);
여기에서는 GET 파라미터를 보다 쉽게 사용할 수 있도록 오브젝트로 변환하기 위해 이 코드를 만들었습니다.
// Get Nav URL
function getNavUrl() {
// Get URL
return window.location.search.replace("?", "");
};
function getParameters(url) {
// Params obj
var params = {};
// To lowercase
url = url.toLowerCase();
// To array
url = url.split('&');
// Iterate over URL parameters array
var length = url.length;
for(var i=0; i<length; i++) {
// Create prop
var prop = url[i].slice(0, url[i].search('='));
// Create Val
var value = url[i].slice(url[i].search('=')).replace('=', '');
// Params New Attr
params[prop] = value;
}
return params;
};
// Call of getParameters
console.log(getParameters(getNavUrl()));
var getQueryParam = function(param) {
var found;
window.location.search.substr(1).split("&").forEach(function(item) {
if (param == item.split("=")[0]) {
found = item.split("=")[1];
}
});
return found;
};
URL에서 GET 파라미터에 접속하기 위한 간단한 JavaScript 함수를 만들었습니다.
이 JavaScript 소스를 포함하기만 하면get
파라미터를 지정합니다.예: http://example.com/index.php?language=french,에서language
에는 '하다'로 액세스 할 수 .$_GET["language"]
모든 $_GET_Params
와 HTML은 모두 으로 제공됩니다JavaScript HTML 。
<!DOCTYPE html>
<html>
<body>
<!-- This script is required -->
<script>
function $_GET() {
// Get the Full href of the page e.g. http://www.google.com/files/script.php?v=1.8.7&country=india
var href = window.location.href;
// Get the protocol e.g. http
var protocol = window.location.protocol + "//";
// Get the host name e.g. www.google.com
var hostname = window.location.hostname;
// Get the pathname e.g. /files/script.php
var pathname = window.location.pathname;
// Remove protocol part
var queries = href.replace(protocol, '');
// Remove host part
queries = queries.replace(hostname, '');
// Remove pathname part
queries = queries.replace(pathname, '');
// Presently, what is left in the variable queries is : ?v=1.8.7&country=india
// Perform query functions if present
if (queries != "" && queries != "?") {
// Remove question mark '?'
queries = queries.slice(1);
// Split all the different queries
queries = queries.split("&");
// Get the number of queries
var length = queries.length;
// Declare global variables to store keys and elements
$_GET_Params = new Array();
$_GET = {};
// Perform functions per query
for (var i = 0; i < length; i++) {
// Get the present query
var key = queries[i];
// Split the query and the value
key = key.split("=");
// Assign value to the $_GET variable
$_GET[key[0]] = [key[1]];
// Assign value to the $_GET_Params variable
$_GET_Params[i] = key[0];
}
}
}
// Execute the function
$_GET();
</script>
<h1>GET Parameters</h1>
<h2>Try to insert some get parameter and access it through JavaScript</h2>
</body>
</html>
다음은 Kat와 Bakudan의 예를 바탕으로 한 다른 예입니다. 하지만 좀 더 일반적인 예를 들어 보겠습니다.
function getParams ()
{
var result = {};
var tmp = [];
location.search
.substr (1)
.split ("&")
.forEach (function (item)
{
tmp = item.split ("=");
result [tmp[0]] = decodeURIComponent (tmp[1]);
});
return result;
}
location.getParams = getParams;
console.log (location.getParams());
console.log (location.getParams()["returnurl"]);
독자적으로 실장하는 대신에 라이브러리를 사용하는 것을 꺼려하지 않는 경우는, https://github.com/jgallen23/querystring 를 참조해 주세요.
이 솔루션은 URL 디코딩을 처리합니다.
var params = function() {
function urldecode(str) {
return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}
function transformToAssocArray( prmstr ) {
var params = {};
var prmarr = prmstr.split("&");
for ( var i = 0; i < prmarr.length; i++) {
var tmparr = prmarr[i].split("=");
params[tmparr[0]] = urldecode(tmparr[1]);
}
return params;
}
var prmstr = window.location.search.substr(1);
return prmstr != null && prmstr != "" ? transformToAssocArray(prmstr) : {};
}();
사용방법:
console.log('someParam GET value is', params['someParam']);
파라미터를 JSON 개체로 가져오려면 다음 절차를 수행합니다.
console.log(getUrlParameters())
function getUrlParameters() {
var out = {};
var str = window.location.search.replace("?", "");
var subs = str.split(`&`).map((si)=>{var keyVal = si.split(`=`); out[keyVal[0]]=keyVal[1];});
return out
}
나의 솔루션은 @tak3r로 확장된다.
빈 합니다.?a=1&a=2&a=3
:
function getQueryParams () {
function identity (e) { return e; }
function toKeyValue (params, param) {
var keyValue = param.split('=');
var key = keyValue[0], value = keyValue[1];
params[key] = params[key]?[value].concat(params[key]):value;
return params;
}
return decodeURIComponent(window.location.search).
replace(/^\?/, '').split('&').
filter(identity).
reduce(toKeyValue, {});
}
위치 개체에서 사용할 수 있는 검색 기능을 사용할 수 있습니다.검색 기능은 URL의 매개 변수 부분을 제공합니다. 자세한 내용은 위치 개체에서 확인할 수 있습니다.
변수와 값을 가져오기 위해 결과 문자열을 구문 분석해야 합니다(예: '='에서 변수와 값을 분할).
AngularJS를 사용하는 Angular를 할 수 .JS의 경우$routeParams
를 사용합니다.ngRoute
표시
앱에 모듈을 추가해야 합니다.
angular.module('myApp', ['ngRoute'])
할 수 .$routeParams
:
.controller('AppCtrl', function($routeParams) {
console.log($routeParams); // JSON object
}
언급URL : https://stackoverflow.com/questions/5448545/how-to-retrieve-get-parameters-from-javascript
'programing' 카테고리의 다른 글
NodeJs Mysql 오류: ER_PARSE_ERROR 여러 테이블에 삽입 (0) | 2022.10.10 |
---|---|
배열에서 첫 번째 요소를 제외한 마지막 5개의 요소를 가져오려면 어떻게 해야 합니까? (0) | 2022.10.10 |
한 테이블에서 다른 테이블에 존재하지 않는 레코드 찾기 (0) | 2022.09.28 |
PHP의 세션과 쿠키의 차이점은 무엇입니까? (0) | 2022.09.28 |
Javascript에서 소수점 1자리를 어떻게 반올림합니까? (0) | 2022.09.28 |