Question Comment obtenir la chaîne de requête de l'URL actuelle avec JavaScript?


J'ai l'URL comme ceci:

http://localhost/PMApp/temp.htm?ProjectID=462

Ce que je dois faire, c'est obtenir les détails après le ? signe (chaîne de requête) - c'est-à-dire ProjectID=462. Comment puis-je obtenir cela en utilisant JavaScript?

Ce que j'ai fait jusqu'ici, c'est ceci:

var url = window.location.toString();
url.match(?);

Je ne sais pas quoi faire ensuite.


57
2018-03-26 10:30


origine


Réponses:


Regardez le Article MDN sur window.location.

Le QueryString est disponible dans window.location.search.

Solution qui fonctionne également dans les navigateurs existants

MDN fournit un exemple (plus disponible dans l'article référencé ci-dessus) de la façon d'obtenir la valeur d'une seule clé disponible dans le QueryString. Quelque chose comme ça:

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

// Would write the value of the QueryString-variable called name to the console  
console.log(getQueryStringValue("name")); 

Dans les navigateurs modernes

Dans les navigateurs modernes, vous avez le searchParams propriété de l'interface URL, qui renvoie un URLSearchParams objet. L'objet renvoyé a un certain nombre de méthodes pratiques, y compris une méthode get. Donc, l'équivalent de l'exemple ci-dessus serait:

let params = (new URL(document.location)).searchParams;
let name = params.get("name");

le URLSearchParams L'interface peut également être utilisée pour analyser des chaînes dans un format de chaîne de requête, et les transformer en un objet URLSearchParams pratique.

let paramsString = "name=foo&age=1337"
let searchParams = new URLSearchParams(paramsString);

searchParams.has("name") === true; // true
searchParams.get("age") === "1337"; // true

Notez que la prise en charge du navigateur est encore limitée sur cette interface, donc si vous avez besoin de prendre en charge les navigateurs existants, respectez le premier exemple.


130
2018-03-26 10:32



Utilisation window.location.search pour tout avoir après ?  comprenant ?

Exemple:

var url = window.location.search;
url = url.replace("?", ''); // remove the ?
alert(url); //alerts ProjectID=462 is your case

42
2018-03-26 10:34



Cela ajoutera une fonction globale pour accéder aux variables queryString sous forme de carte.

// -------------------------------------------------------------------------------------
// Add function for 'window.location.query( [queryString] )' which returns an object
// of querystring keys and their values. An optional string parameter can be used as
// an alternative to 'window.location.search'.
// -------------------------------------------------------------------------------------
// Add function for 'window.location.query.makeString( object, [addQuestionMark] )'
// which returns a queryString from an object. An optional boolean parameter can be
// used to toggle a leading question mark.
// -------------------------------------------------------------------------------------
if (!window.location.query) {
    window.location.query = function (source) {
        var map = {};
        source = source || this.search;

        if ("" != source) {
            var groups = source, i;

            if (groups.indexOf("?") == 0) {
                groups = groups.substr(1);
            }

            groups = groups.split("&");

            for (i in groups) {
                source = groups[i].split("=",
                    // For: xxx=, Prevents: [xxx, ""], Forces: [xxx]
                    (groups[i].slice(-1) !== "=") + 1
                );

                // Key
                i = decodeURIComponent(source[0]);

                // Value
                source = source[1];
                source = typeof source === "undefined"
                    ? source
                    : decodeURIComponent(source);

                // Save Duplicate Key
                if (i in map) {
                    if (Object.prototype.toString.call(map[i]) !== "[object Array]") {
                        map[i] = [map[i]];
                    }

                    map[i].push(source);
                }

                // Save New Key
                else {
                    map[i] = source;
                }
            }
        }

        return map;
    }

    window.location.query.makeString = function (source, addQuestionMark) {
        var str = "", i, ii, key;

        if (typeof source == "boolean") {
            addQuestionMark = source;
            source = undefined;
        }

        if (source == undefined) {
            str = window.location.search;
        }
        else {
            for (i in source) {
                key = "&" + encodeURIComponent(i);

                if (Object.prototype.toString.call(source[i]) !== "[object Array]") {
                    str += key + addUndefindedValue(source[i]);
                }
                else {
                    for (ii = 0; ii < source[i].length; ii++) {
                        str += key + addUndefindedValue(source[i][ii]);
                    }
                }
            }
        }

        return (addQuestionMark === false ? "" : "?") + str.substr(1);
    }

    function addUndefindedValue(source) {
        return typeof source === "undefined"
            ? ""
            : "=" + encodeURIComponent(source);
    }
}

Prendre plaisir.


6
2017-11-19 14:33



Vous pouvez utiliser cette fonction, pour la chaîne divisée à partir de? Id =

 function myfunction(myvar){
  var urls = myvar;
  var myurls = urls.split("?id=");
  var mylasturls = myurls[1];
  var mynexturls = mylasturls.split("&");
  var url = mynexturls[0];
  alert(url)
}
myfunction(window.top.location.href);
myfunction("http://www.myname.com/index.html?id=dance&emp;cid=in_social_facebook-hhp-food-moonlight-influencer_s7_20160623");

Voici la violon 


3
2018-06-24 04:59



  window.location.href.slice(window.location.href.indexOf('?') + 1);

3
2017-11-11 07:39



Vous pouvez utiliser le search propriété du window.location objet pour obtenir la partie requête de l'URL. Notez qu'il inclut le point d'interrogation (?) Au début, juste au cas où cela affecterait la façon dont vous avez l'intention de l'analyser.


2
2018-03-26 10:33



  var queryObj = {};
   if(url.split("?").length>0){
     var queryString = url.split("?")[1];
   }

maintenant vous avez la partie requête dans queryString

Le premier remplacement supprimera tous les espaces blancs, le second remplacera tous les "&" par "," et enfin le troisième remplacera ":" à la place des signes "=".

queryObj = JSON.parse('{"' + queryString.replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g,'":"') + '"}')

Alors disons que vous avez eu une requête comme abc = 123 & efg = 456. Maintenant, avant l'analyse, votre requête est convertie en quelque chose comme {"abc": "123", "efg": "456"}. Maintenant, quand vous allez analyser ceci, cela vous donnera votre requête dans un objet json.


2
2018-05-29 07:15