매개 변수 크기와 이름을 알 수없는 많은 jQuery 예제를 보았습니다.
내 URL에는 문자열이 하나만 있습니다.
http://example.com?sent=yes
나는 단지 탐지하고 싶다 :
- 않는
sent
존재 하는가? - "예"와 같습니까?
매개 변수 크기와 이름을 알 수없는 많은 jQuery 예제를 보았습니다.
내 URL에는 문자열이 하나만 있습니다.
http://example.com?sent=yes
나는 단지 탐지하고 싶다 :
sent
존재 하는가?답변:
여기에 최고의 솔루션 입니다.
var getUrlParameter = function getUrlParameter(sParam) {
var sPageURL = window.location.search.substring(1),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++) {
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] === sParam) {
return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
}
}
};
그리고 이것이 URL이이라고 가정 하고이 기능을 사용할 수있는 방법
http://dummy.com/?technology=jquery&blog=jquerybyexample
입니다.
var tech = getUrlParameter('technology');
var blog = getUrlParameter('blog');
false
또는 null
빈 검색
&
되거나 =
매개 변수 값 이 있으면 올바르게 작동하지 않습니다 .
2020 년 솔루션
우리는 : http://example.com?sent=yes
let searchParams = new URLSearchParams(window.location.search)
합니까는 전송 존재를 ?
searchParams.has('sent') // true
그것이 동일 "예"에?
let param = searchParams.get('sent')
그런 다음 비교하십시오.
if ('URLSearchParams' in window) { // Browser supports URLSearchParams}
하십시오. 여기 참조
jQuery 코드 스 니펫은 URL에 저장된 동적 변수를 매개 변수로 가져 와서 스크립트와 함께 사용할 수있는 JavaScript 변수로 저장합니다.
$.urlParam = function(name){
var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
if (results==null) {
return null;
}
return decodeURI(results[1]) || 0;
}
example.com?param1=name¶m2=&id=6
$.urlParam('param1'); // name
$.urlParam('id'); // 6
$.urlParam('param2'); // null
공백이있는 예제 매개 변수
http://www.jquery4u.com?city=Gold Coast
console.log($.urlParam('city'));
//output: Gold%20Coast
console.log(decodeURIComponent($.urlParam('city')));
//output: Gold Coast
return results[1] || 0;
그것을해야한다return decodeURI(results[1]) || 0;
|| 0
은 이미 결과를 확인했기 때문에 왜 부품 이 필요 합니까? 항상 일치 배열을 반환하지 않습니까?
나는 항상 이것을 한 줄로 붙입니다. 이제 params에는 변수가 있습니다.
params={};location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){params[k]=v})
여러 줄 :
var params={};
window.location.search
.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(str,key,value) {
params[key] = value;
}
);
기능으로서
function getSearchParams(k){
var p={};
location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){p[k]=v})
return k?p[k]:p;
}
다음과 같이 사용할 수 있습니다.
getSearchParams() //returns {key1:val1, key2:val2}
또는
getSearchParams("key1") //returns val1
replace(/[?&;]+([^=]+)=([^&;]*)/gi
";"을 재구성 하여 약간 개선 될 수 있습니다 . 구분 자로도 문자.
var params={};window.location.hash.replace(/[#&]+([^=&]+)=([^&]*)/gi,function(str,key,value){params[key] = value;});
이것은 창에서 해시가 ajax 요청으로 업데이트되고 사용자가 URI로 이동하는 AJAX와 같은 경우에 유용합니다. 해시를 포함합니다.
또 다른 대체 기능 ...
function param(name) {
return (location.search.split(name + '=')[1] || '').split('&')[0];
}
param('t') == param('sent') == 'yes'
OP 예에서. 다음은 수정 사항입니다. return (location.search.split(new RegExp('[?&]' + name + '='))[1] || '').split('&')[0]
; 또한 누락 된 매개 변수에 대해 빈 문자열이 표시되므로 매개 변수가 존재하는지 알 수 없습니다.
return (location.search.split('?' + name + '=')[1] || location.search.split('&' + name + '=')[1] || '').split('&')[0];
너무 늦을 수 있습니다. 그러나이 방법은 매우 쉽고 간단합니다.
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.url.js"></script>
<!-- URL: www.example.com/correct/?message=done&year=1990 -->
<script type="text/javascript">
$(function(){
$.url.attr('protocol') // --> Protocol: "http"
$.url.attr('path') // --> host: "www.example.com"
$.url.attr('query') // --> path: "/correct/"
$.url.attr('message') // --> query: "done"
$.url.attr('year') // --> query: "1990"
});
업데이트
URL 플러그인이 필요합니다 : plugins.jquery.com/url
감사합니다-Ripounet
또는 솔루션이 지나치게 복잡한 이유 때문에이 깔끔한 작은 기능을 사용할 수 있습니까?
function getQueryParam(param, defaultValue = undefined) {
location.search.substr(1)
.split("&")
.some(function(item) { // returns first occurence and stops
return item.split("=")[0] == param && (defaultValue = item.split("=")[1], true)
})
return defaultValue
}
단순화되고 한 줄로 표시되면 더 좋아 보입니다.
var queryDict = {};
location.search.substr(1).split("&").forEach(function(item) {queryDict[item.split("=")[0]] = item.split("=")[1]})
결과: queryDict [ 'sent'] // 정의되지 않거나 'value'
: 당신은 더 나은이 답변을보고 어떻게 자바 스크립트에서 쿼리 문자열 값을 얻을 수 있습니까?
맛보기
"?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"
> queryDict
a: ["1", "5", "t e x t"]
b: ["2"]
c: ["3"]
d: [undefined]
e: [undefined, "http://w3schools.com/my test.asp?name=ståle&car=saab"]
> queryDict["a"][1] // "5"
> queryDict.a[1] // "5"
사용 URLSearchParams
:
var params = new window.URLSearchParams(window.location.search);
console.log(params.get('name'));
호환성에주의하십시오 (대부분 괜찮지 만 IE와 Edge는 이야기가 다를 수 있습니다. 호환 가능한 참조는 https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams )
이것은 간단하고 나를 위해 일했습니다.
$.urlParam = function(name){
var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
return results[1] || 0;
}
URL이 http://www.yoursite.com?city=4 인 경우
이 시도
console.log($.urlParam('city'));
아마도 당신은 치과 의사 JS 에게 모양 을주고 싶 습니까? (면책 조항 : 코드를 작성했습니다)
암호:
document.URL == "http://helloworld.com/quotes?id=1337&author=kelvin&message=hello"
var currentURL = document.URL;
var params = currentURL.extract();
console.log(params.id); // 1337
console.log(params.author) // "kelvin"
console.log(params.message) // "hello"
Dentist JS를 사용하면 기본적으로 모든 문자열 (예 : document.URL.extract ())에서 extract () 함수를 호출 할 수 있으며 발견 된 모든 매개 변수의 HashMap을 다시 얻을 수 있습니다. 또한 구분자와 모든 것을 처리하도록 사용자 정의 할 수 있습니다.
축소 버전 <1kb
이것이 도움이되기를 바랍니다.
<script type="text/javascript">
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;
}
$(window).load(function() {
var param = getParameters();
if (typeof param.sent !== "undefined") {
// Do something.
}
});
</script>
function GetRequestParam(param)
{
var res = null;
try{
var qs = decodeURIComponent(window.location.search.substring(1));//get everything after then '?' in URI
var ar = qs.split('&');
$.each(ar, function(a, b){
var kv = b.split('=');
if(param === kv[0]){
res = kv[1];
return false;//break loop
}
});
}catch(e){}
return res;
}
이 실습 데모를 사용해보십시오 http://jsfiddle.net/xy7cX/
API :
도움이 될 것입니다 :)
암호
var url = "http://myurl.com?sent=yes"
var pieces = url.split("?");
alert(pieces[1] + " ===== " + $.inArray("sent=yes", pieces));
이 위대한 도서관이 있습니다 : https://github.com/allmarkedup/purl
간단하게 할 수 있습니다
url = 'http://example.com?sent=yes';
sent = $.url(url).param('sent');
if (typeof sent != 'undefined') { // sent exists
if (sent == 'yes') { // sent is equal to yes
// ...
}
}
예는 jQuery를 사용한다고 가정합니다. 일반 자바 스크립트처럼 사용할 수도 있습니다. 구문은 약간 다릅니다.
이것은 과잉 일 수 있지만 URI.js 라는 URI 구문 분석에 사용할 수있는 매우 인기있는 라이브러리가 있습니다 .
var uri = "http://example.org/foo.html?technology=jquery&technology=css&blog=stackoverflow";
var components = URI.parse(uri);
var query = URI.parseQuery(components['query']);
document.getElementById("result").innerHTML = "URI = " + uri;
document.getElementById("result").innerHTML += "<br>technology = " + query['technology'];
// If you look in your console, you will see that this library generates a JS array for multi-valued queries!
console.log(query['technology']);
console.log(query['blog']);
<script src="https://cdnjs.cloudflare.com/ajax/libs/URI.js/1.17.0/URI.min.js"></script>
<span id="result"></span>
그래서 당신은 어떤 URL을 사용하고 가치를 얻을 수 있습니다
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
사용 예
// query string: ?first=value1&second=&value2
var foo = getParameterByName('first'); // "value1"
var bar = getParameterByName('second'); // "value2"
참고 : 매개 변수가 여러 번 존재하면 (? first = value1 & second = value2) 첫 번째 값 (value1)과 두 번째 값을 (value2)로 얻습니다.
이것은 당신에게 좋은 물건을 줄 것입니다.
function queryParameters () {
var result = {};
var params = window.location.search.split(/\?|\&/);
params.forEach( function(it) {
if (it) {
var param = it.split("=");
result[param[0]] = param[1];
}
});
return result;
}
그리고;
if (queryParameters().sent === 'yes') { .....
이것은 Gazoris 의 답변을 기반으로 하지만 URL은 매개 변수를 디코딩하여 숫자와 문자 이외의 데이터가 포함 된 경우 사용할 수 있습니다.
function urlParam(name){
var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
// Need to decode the URL parameters, including putting in a fix for the plus sign
// https://stackoverflow.com/a/24417399
return results ? decodeURIComponent(results[1].replace(/\+/g, '%20')) : null;
}
URI.js 라이브러리 를 사용하는 또 다른 예가 있습니다.
예는 요청한대로 정확하게 질문에 대답합니다.
var url = 'http://example.com?sent=yes';
var urlParams = new URI(url).search(true);
// 1. Does sent exist?
var sendExists = urlParams.sent !== undefined;
// 2. Is it equal to "yes"?
var sendIsEqualtToYes = urlParams.sent == 'yes';
// output results in readable form
// not required for production
if (sendExists) {
console.log('Url has "sent" param, its value is "' + urlParams.sent + '"');
if (urlParams.sent == 'yes') {
console.log('"Sent" param is equal to "yes"');
} else {
console.log('"Sent" param is not equal to "yes"');
}
} else {
console.log('Url hasn\'t "sent" param');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/URI.js/1.18.2/URI.min.js"></script>
http://example.com?sent=yes
여기에 최고의 솔루션 입니다.
function getUrlParameter(name) {
name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
var results = regex.exec(location.href);
return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
};
위의 함수를 사용하면 개별 매개 변수 값을 얻을 수 있습니다.
getUrlParameter('sent');
Sameer의 답변이 약간 개선되어 호출 할 때마다 모든 매개 변수를 파싱하고 반복하지 않도록 캐시 매개 변수를 클로저로 만듭니다.
var getURLParam = (function() {
var paramStr = decodeURIComponent(window.location.search).substring(1);
var paramSegs = paramStr.split('&');
var params = [];
for(var i = 0; i < paramSegs.length; i++) {
var paramSeg = paramSegs[i].split('=');
params[paramSeg[0]] = paramSeg[1];
}
console.log(params);
return function(key) {
return params[key];
}
})();
나는 이것을 사용하고 작동합니다. http://codesheet.org/codesheet/NF246Tzs
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
var first = getUrlVars()["id"];
바닐라 자바 스크립트를 사용하면 쉽게 매개 변수 (location.search)를 가져 와서 하위 문자열 (?없이)을 가져 와서 '&'로 나누어 배열로 바꿀 수 있습니다.
urlParams를 반복 할 때 '='로 문자열을 다시 분할하고 'params'객체에 object [elmement [0]] = element [1]로 추가 할 수 있습니다. 매우 간단하고 액세스하기 쉽습니다.
http://www.website.com/?error=userError&type=handwritten
var urlParams = location.search.substring(1).split('&'),
params = {};
urlParams.forEach(function(el){
var tmpArr = el.split('=');
params[tmpArr[0]] = tmpArr[1];
});
var error = params['error'];
var type = params['type'];
filename = "p & g.html"& uid = 66과 같은 &에 URL 매개 변수가 있으면 어떻게됩니까?
이 경우 첫 번째 기능이 제대로 작동하지 않습니다. 그래서 코드를 수정했습니다.
function getUrlParameter(sParam) {
var sURLVariables = window.location.search.substring(1).split('&'), sParameterName, i;
for (i = 0; i < sURLVariables.length; i++) {
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] === sParam) {
return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
}
}
}
분명히 나는 대답이 많은 질문에 대한 답변을 추가하고 있지만 다음과 같은 장점이 있습니다.
-jQuery를 포함한 외부 라이브러리에 의존하지 않음
- 'String'을 확장하여 전역 함수 네임 스페이스를 오염시키지 않습니다.
-일치하는 발견 후 글로벌 데이터를 작성하지 않고 불필요한 처리를 수행
-인코딩 문제 처리 및 인코딩되지 않은 매개 변수 이름 수락 (가정)
-명시적인 for
루프 피하기
String.prototype.urlParamValue = function() {
var desiredVal = null;
var paramName = this.valueOf();
window.location.search.substring(1).split('&').some(function(currentValue, _, _) {
var nameVal = currentValue.split('=');
if ( decodeURIComponent(nameVal[0]) === paramName ) {
desiredVal = decodeURIComponent(nameVal[1]);
return true;
}
return false;
});
return desiredVal;
};
그런 다음 다음과 같이 사용하십시오.
var paramVal = "paramName".urlParamValue() // null if no match
특정 URL에서 특정 매개 변수를 찾으려면 다음을 수행하십시오.
function findParam(url, param){
var check = "" + param;
if(url.search(check )>=0){
return url.substring(url.search(check )).split('&')[0].split('=')[1];
}
}
var url = "http://www.yourdomain.com/example?id=1&order_no=114&invoice_no=254";
alert(findParam(url,"order_no"));
jQuery와 JSON을 사용하는 또 다른 솔루션이므로 객체를 통해 매개 변수 값에 액세스 할 수 있습니다.
var loc = window.location.href;
var param = {};
if(loc.indexOf('?') > -1)
{
var params = loc.substr(loc.indexOf('?')+1, loc.length).split("&");
var stringJson = "{";
for(var i=0;i<params.length;i++)
{
var propVal = params[i].split("=");
var paramName = propVal[0];
var value = propVal[1];
stringJson += "\""+paramName+"\": \""+value+"\"";
if(i != params.length-1) stringJson += ",";
}
stringJson += "}";
// parse string with jQuery parseJSON
param = $.parseJSON(stringJson);
}
귀하의 URL이 http://example.com/?search=hello+world&language=en&page=3
그 후 다음과 같은 매개 변수를 사용하면됩니다.
param.language
돌려 주다
en
가장 유용한 사용법은 페이지로드시이를 실행하고 전역 변수를 사용하여 필요할 때마다 매개 변수를 사용하는 것입니다.
매개 변수에 숫자 값이 포함되어 있으면 값을 구문 분석하십시오.
parseInt(param.page)
매개 변수가 없으면 param
빈 개체입니다.
$.urlParam = function(name) {
var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
return results[1] || 0;
}