[jquery] jQuery 또는 일반 JavaScript를 사용하여 URL 매개 변수를 얻는 방법은 무엇입니까?

매개 변수 크기와 이름을 알 수없는 많은 jQuery 예제를 보았습니다.

내 URL에는 문자열이 하나만 있습니다.

http://example.com?sent=yes

나는 단지 탐지하고 싶다 :

  1. 않는 sent존재 하는가?
  2. “예”와 같습니까?


답변

여기에 최고의 솔루션 입니다.

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');


답변

2020 년 솔루션

우리는 : http://example.com?sent=yes

let searchParams = new URLSearchParams(window.location.search)

합니까는 전송 존재를 ?

searchParams.has('sent') // true

그것이 동일 “예”에?

let param = searchParams.get('sent')

그런 다음 비교하십시오.


답변

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


답변

나는 항상 이것을 한 줄로 붙입니다. 이제 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


답변

또 다른 대체 기능 …

function param(name) {
    return (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
}

단순화되고 한 줄로 표시되면 더 좋아 보입니다.

tl; dr 단선 솔루션

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"