Wie erhalte ich URL-Parameter mit jQuery oder einfachem JavaScript?

619

Ich habe viele jQuery-Beispiele gesehen, bei denen Parametergröße und Name unbekannt sind.

Meine URL wird immer nur 1 Zeichenfolge haben:

http://example.com?sent=yes

Ich möchte nur erkennen:

  1. Existiert sent?
  2. Ist es gleich "Ja"?
LeBlaireau
quelle
2
Mögliches Duplikat von Wie kann ich Abfragezeichenfolgenwerte abrufen?
James Donnelly
Beste Lösung, die ich je gesehen habe [hier] [1] [1]: stackoverflow.com/a/901144/3106590
hmfarimani
1
Es gibt jetzt ein Plugin / eine Bibliothek dafür, URI.js genannt: github.com/medialize/URI.js
alexw

Antworten:

1211

Beste Lösung hier .

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]);
        }
    }
};

Und so können Sie diese Funktion verwenden, vorausgesetzt, die URL lautet ,
http://dummy.com/?technology=jquery&blog=jquerybyexample.

var tech = getUrlParameter('technology');
var blog = getUrlParameter('blog');
Sameer Kazi
quelle
8
Vielen Dank! Aber als ich das kopierte, fand ich eine böse Überraschung, die gegen Ende ein Leerzeichen mit einer Breite von Null (\ u200b) beinhaltete. Das Skript weist einen unsichtbaren Syntaxfehler auf.
Christofer Ohlsson
11
Geben Sie eine falseoder nullfür leere Suche zurück
Stefano Caravana
4
Diese Lösung funktioniert ziemlich gut für mich. Ich habe gerade var sPageURL = decodeURI (window.location.search.substring (1)) verwendet. Um% 20 Zeichen in Leerzeichen umzuwandeln, gebe ich eine leere Zeichenfolge anstelle von nichts zurück, wenn der Parameter nicht übereinstimmt.
Christophe
18
Ich habe die Antwort so aktualisiert, dass sie alle Änderungen des Kommentarcodes über diesem Kommentar enthält.
Rob Evans
7
Die Dekodierung sollte für den Parameterwert erfolgen (wie Iouri vorschlägt). Wenn die Dekodierung für die URL erfolgt (wie in der Antwort), funktioniert sie nicht richtig, wenn eine Kodierung &oder =ein Parameterwert vorhanden ist.
Zakinster
288

Lösung ab 2020

Wir haben: http://example.com?sent=yes

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

Does gesendet exist ?

searchParams.has('sent') // true

Ist es gleich "Ja"?

let param = searchParams.get('sent')

und dann vergleiche es einfach.

Optio
quelle
16
Ich denke, dies wird nicht in allen Browsern unterstützt. Warum sollte man es also verwenden? Referenz - developer.mozilla.org/en-US/docs/Web/API/URLSearchParams
p_champ
1
@p_champ du hast recht. Aber Sie können Polyfill für URLSearchParams
Optio
2
Funktioniert derzeit nicht in IE / Edge, ebenso wie die Funktionserkennung: if ('URLSearchParams' in window) { // Browser supports URLSearchParams} Siehe hier
mfgmicha
4
Gut genug für mich und mein Zielpublikum. caniuse.com/#feat=urlsearchparams
jontsai
4
@p_champ Edge wurde in Version 17 (April 2018) unterstützt. Lass IE sterben.
Ryan DuVal
198

jQuery-Codefragment, um die in der URL gespeicherten dynamischen Variablen als Parameter abzurufen und als JavaScript-Variablen zu speichern, die für die Verwendung mit Ihren Skripten bereit sind:

$.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

Beispielparameter mit Leerzeichen

http://www.jquery4u.com?city=Gold Coast
console.log($.urlParam('city'));  
//output: Gold%20Coast



console.log(decodeURIComponent($.urlParam('city'))); 
//output: Gold Coast
Reza Baradaran Gazorisangi
quelle
12
Hinweis: Sie müssen dekodieren, falls es Sonderzeichen als Parameter oder Umlaute usw. gibt. Stattdessen return results[1] || 0;sollte es seinreturn decodeURI(results[1]) || 0;
Kai Noack
Nur neugierig, warum braucht es das || 0Teil, da es bereits eine Überprüfung für das Ergebnis gibt, würde es nicht immer das Übereinstimmungsarray zurückgeben?
AirWick219
@ AirWick219 eine entsprechende ausfallsichere. Obwohl überflüssig, tut es nie weh, vorsichtig zu sein
Zanderwar
2
Hier ist höchstwahrscheinlich die ursprüngliche Quelle: sitepoint.com/url-parameters-jquery, aber diese Antwort hat einige neue Ideen hinzugefügt
bgmCoder
1
Ich bin mir nicht sicher, ob es sich lohnt, jQuery dafür zu verwenden.
Quentin 2
88

Ich halte das immer als eine Zeile. Jetzt hat params die vars:

params={};location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){params[k]=v})

mehrzeilig:

var params={};
window.location.search
  .replace(/[?&]+([^=&]+)=([^&]*)/gi, function(str,key,value) {
    params[key] = value;
  }
);

als eine Funktion

function getSearchParams(k){
 var p={};
 location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){p[k]=v})
 return k?p[k]:p;
}

die Sie verwenden könnten als:

getSearchParams()  //returns {key1:val1, key2:val2}

oder

getSearchParams("key1")  //returns val1
AwokeKnowing
quelle
Hässlicher Hack, der die Suchzeichenfolge ändert ... aber keine externen Module oder Abfragen erforderlich. Ich mag das.
Bryce
4
@Bryce Die Suchzeichenfolge wird nicht geändert. Die .replace gibt tatsächlich eine neue Zeichenfolge zurück und diese zurückgegebenen Zeichenfolgen werden in das params-Objekt verarbeitet.
AwokeKnowing
Schön, kurz und im Gegensatz zur akzeptierten Lösung muss die URL nicht jedes Mal neu analysiert werden, wenn Sie einen Wert benötigen. Könnte leicht verbessert werden replace(/[?&;]+([^=]+)=([^&;]*)/gi, um ";" Charakter auch als Trennzeichen.
Le Droid
klarer und schmerzloser Einzeiler, besser als akzeptierte Antwort für mich, keine zusätzlichen Bibliotheken.
Sam
Dies ist, was man verwenden würde, wenn man Hashes anstelle von GET-Abfrage-Trennzeichen (Fragezeichen) verwendet: var params={};window.location.hash.replace(/[#&]+([^=&]+)=([^&]*)/gi,function(str,key,value){params[key] = value;}); Dies ist nützlich für Dinge wie AJAX, bei denen das Hash-In-Fenster mit Ajax-Anfragen aktualisiert wird, aber auch einer, bei dem der Benutzer zu einer Uri wechselt mit einem Hash.
Tommie
48

Noch eine alternative Funktion ...

function param(name) {
    return (location.search.split(name + '=')[1] || '').split('&')[0];
}
Rodnaph
quelle
Name muss eine Zeichenfolge sein. Arbeitete wie ein Zauber ~
Mintedsky
2
Das ist mein Lieblings. +1 Bemerkenswert ist jedoch, dass dies eine Art "Suche mit" ist. Wenn Sie beispielsweise "Telefon" als Namen eingeben und ein Feld mit dem Namen "HomePhone" vorhanden ist, wird möglicherweise der falsche Wert zurückgegeben, wenn er in der URL an erster Stelle steht.
Efreed
2
Das ist falsch! Zum Beispiel param('t') == param('sent') == 'yes'im OP-Beispiel. Hier ist ein Fix : return (location.search.split(new RegExp('[?&]' + name + '='))[1] || '').split('&')[0]; Beachten Sie auch, dass Sie nicht feststellen können, ob der Parameter vorhanden ist, da Sie eine leere Zeichenfolge für fehlende Parameter erhalten.
Oriadam
Sehr einfach und elegant. Funktioniert wie ein Traum. Vielen Dank.
Anjana Silva
// (um zu erzwingen, dass der vollständige Schlüssel existiert, anstatt nur den letzten Teil des Schlüssels)return (location.search.split('?' + name + '=')[1] || location.search.split('&' + name + '=')[1] || '').split('&')[0];
Aaron
45

Vielleicht ist es zu spät. Diese Methode ist jedoch sehr einfach und unkompliziert

<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"
});

UPDATE
Erfordert das URL-Plugin: plugins.jquery.com/url
Thanks -Ripounet

Sariban D'Cl
quelle
2
Wer sich dafür entscheidet, sollte zuerst das Repo überprüfen. Die Nutzung hat sich geändert. $ .url.attr ('message') wird zu $ ​​.url ("query") und gibt nur die vollständige Abfrage aus! Um nur einen Parameter zu erhalten, musste ich: $ .url ("query"). Split ("=") [1] url github link
pseudozach
34

Oder Sie können diese nette kleine Funktion verwenden, denn warum überkomplizierte Lösungen?

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
}

was noch besser aussieht, wenn es vereinfacht und onelined ist:

Einzeilige Lösung

var queryDict = {};
location.search.substr(1).split("&").forEach(function(item) {queryDict[item.split("=")[0]] = item.split("=")[1]})
Ergebnis:
queryDict ['gesendet'] // undefiniert oder 'Wert'

Aber was ist, wenn Sie verschlüsselte Zeichen oder mehrwertige Schlüssel haben ?

Sie sehen diese Antwort besser: Wie kann ich Abfragezeichenfolgenwerte in JavaScript abrufen?

Sneak Peak

"?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"
Qwerty
quelle
3
Der String-Split ist wahrscheinlich auch schneller als der reguläre Ausdruck. Nicht, dass dies ein Faktor ist, wenn man bedenkt, dass die URL nur einmal analysiert wird.
Patrick
Dies ist die Lösung (die erste), die für mich in allen Browsern perfekt funktioniert hat - danke!
NickyTheWrench
1
@NickyTheWrench Schön das zu hören, danke! Beachten Sie jedoch, dass dies eine sehr einfache Lösung ist. Wenn Sie komplizierte URL-Parameter erhalten, die Sonderzeichen enthalten, überprüfen Sie besser den angegebenen Link.
Qwerty
@Qwerty yup - mein Anwendungsfall ist sehr einfach, wenn der Parameter immer der gleiche ist usw. (im Grunde genau das, wonach das OP gefragt hat) Nochmals vielen Dank!
NickyTheWrench
1
@BernardVanderBeken Interessant, ich habe es trotzdem behoben, es ist eine ziemlich dumme Lösung, die unten, die codierte Zeichen und Arrays unterstützt, ist viel besser.
Qwerty
33

Verwenden von URLSearchParams:

var params = new window.URLSearchParams(window.location.search);
console.log(params.get('name'));

Seien Sie vorsichtig mit der Kompatibilität (Meistens ist es in Ordnung, aber IE und Edge können unterschiedliche Geschichten sein. Überprüfen Sie dies auf kompatible Referenzen: https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams )

Xin
quelle
Nicht die meisten Browser können dies verwenden.
Saf21
URLSearchParams ersetzt das Sonderzeichen "+" durch ein Leerzeichen. Wenn Ihr URL-Parameter ein "+" enthält, wird er ersetzt.
Growler
11

Dieser ist einfach und hat für mich gearbeitet

$.urlParam = function(name){
    var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
    return results[1] || 0;
}

Wenn Ihre URL also http://www.yoursite.com?city=4 lautet

Versuche dies

console.log($.urlParam('city'));
Shuhad Zaman
quelle
10

Vielleicht möchten Sie Zahnarzt JS einen Blick geben? (Haftungsausschluss: Ich habe den Code geschrieben)

Code:

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"

Mit Dentist JS können Sie grundsätzlich die Funktion extract () für alle Zeichenfolgen (z. B. document.URL.extract ()) aufrufen und erhalten eine HashMap aller gefundenen Parameter zurück. Es ist auch anpassbar, um mit Trennzeichen und allem umzugehen.

Minimierte Version <1kb

Kelvintaywl
quelle
5

Ich hoffe das wird helfen.

 <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>
Tarun Gupta
quelle
5

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;
}

p_champ
quelle
4

Probieren Sie diese funktionierende Demo aus http://jsfiddle.net/xy7cX/

API:

Das sollte helfen :)

Code

var url = "http://myurl.com?sent=yes"

var pieces = url.split("?");
alert(pieces[1] + " ===== " + $.inArray("sent=yes", pieces));
Tats_innit
quelle
3
funktioniert nur für eine einzelne var - das & würde es abwerfen - könnte mit regex erweitert werden
Alvin
3

Es gibt diese großartige Bibliothek: https://github.com/allmarkedup/purl

das erlaubt dir einfach zu machen

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
     // ...
   }
}

In diesem Beispiel wird davon ausgegangen, dass Sie jQuery verwenden. Sie könnten es auch einfach als einfaches Javascript verwenden, die Syntax wäre dann etwas anders.

Michael Konečný
quelle
1
Diese Bibliothek wird nicht mehr gepflegt, aber ich benutze sie und sie ist großartig. Stellen Sie sicher, dass Sie param not attr verwenden, um diese Abfragezeichenfolgenparameter abzurufen, wie der Autor in seinem Beispiel angegeben hat.
Aktion Dan
3

Dies könnte übertrieben, aber es ist eine ziemlich beliebte Bibliothek jetzt verfügbar für das Parsen von URIs, genannt URI.js .

Beispiel

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>

alexw
quelle
3

So einfach können Sie jede URL verwenden und Wert erhalten

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, " "));
}

Anwendungsbeispiel

// query string: ?first=value1&second=&value2
var foo = getParameterByName('first'); // "value1"
var bar = getParameterByName('second'); // "value2" 

Hinweis: Wenn ein Parameter mehrmals vorhanden ist (? First = value1 & second = value2), erhalten Sie den ersten Wert (value1) und den zweiten Wert als (value2).

ImBhavin95
quelle
2

Dies gibt Ihnen ein schönes Objekt, mit dem Sie arbeiten können

    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;
    }

Und dann;

    if (queryParameters().sent === 'yes') { .....
Brian F.
quelle
Split (/ \? | \ & /) bedeutet
Selva Ganapathi
2

Dies basiert auf der Antwort von Gazoris , aber die URL dekodiert die Parameter, damit sie verwendet werden können, wenn sie andere Daten als Zahlen und Buchstaben enthalten:

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;
}
Stephen Ostermiller
quelle
2

Es gibt ein weiteres Beispiel für die Verwendung der Bibliothek URI.js.

Beispiel beantwortet die Fragen genau wie gestellt.

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>

userlond
quelle
2
http://example.com?sent=yes

Beste Lösung hier .

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

Mit der obigen Funktion können Sie einzelne Parameterwerte erhalten:

getUrlParameter('sent');
Naami
quelle
Perfekte Antwort!
Srijani Ghosh
1

Coffeescript-Version von Sameers Antwort

getUrlParameter = (sParam) ->
  sPageURL = window.location.search.substring(1)
  sURLVariables = sPageURL.split('&')
  i = 0
  while i < sURLVariables.length
    sParameterName = sURLVariables[i].split('=')
    if sParameterName[0] == sParam
      return sParameterName[1]
    i++
Stevenspiel
quelle
1

Eine leichte Verbesserung von Sameers Antwort: Cache-Parameter werden geschlossen, um zu vermeiden, dass bei jedem Aufruf alle Parameter analysiert und durchlaufen werden

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];
    }
})();
streaver91
quelle
1

Ich benutze das und es funktioniert. 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"];
studio-klik
quelle
1

Mit Vanilla JavaScript können Sie einfach die Parameter (location.search) übernehmen, den Teilstring (ohne das?) Abrufen und ihn in ein Array umwandeln, indem Sie ihn durch '&' teilen.

Während Sie durch urlParams iterieren, können Sie die Zeichenfolge erneut mit '=' teilen und sie als Objekt [elmement [0]] = Element [1] zum Objekt 'params' hinzufügen. Super einfach und leicht zugänglich.

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'];
DDT
quelle
1

Was ist, wenn es einen URL-Parameter wie filename = "p & g.html" & uid = 66 gibt?

In diesem Fall funktioniert die 1. Funktion nicht richtig. Also habe ich den Code geändert

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]);
        }
    }
}
user562451
quelle
1

Zugegeben, ich füge meine Antwort einer überbeantworteten Frage hinzu, aber dies hat folgende Vorteile:

- Nicht abhängig von externen Bibliotheken, einschließlich jQuery

- Verschmutzen des globalen Funktionsnamensraums nicht durch Erweitern von 'String'

- Keine globalen Daten erstellen und keine unnötige Verarbeitung durchführen, nachdem eine Übereinstimmung gefunden wurde

- Behandlung von Codierungsproblemen und Akzeptieren (vorausgesetzt) ​​eines nicht codierten Parameternamens

- Vermeiden Sie explizite forSchleifen

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;
};

Dann würden Sie es verwenden als:

var paramVal = "paramName".urlParamValue() // null if no match
BaseZen
quelle
1

Wenn Sie einen bestimmten Parameter aus einer bestimmten URL suchen möchten:

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"));
Wahid Masud
quelle
0

Eine weitere Lösung, die jQuery und JSON verwendet, sodass Sie über ein Objekt auf die Parameterwerte zugreifen können.

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

Angenommen, Ihre URL ist http://example.com/?search=hello+world&language=en&page=3

Danach müssen nur noch die folgenden Parameter verwendet werden:

param.language

zurückgeben

en

Die nützlichste Verwendung besteht darin, sie beim Laden der Seite auszuführen und eine globale Variable zu verwenden, um die Parameter überall dort zu verwenden, wo Sie sie benötigen.

Wenn Ihr Parameter numerische Werte enthält, analysieren Sie einfach den Wert.

parseInt(param.page)

Wenn keine Parameter vorhanden sind, handelt parames sich nur um ein leeres Objekt.

Niksuski
quelle
-1
$.urlParam = function(name) {
  var results = new RegExp('[\?&amp;]' + name + '=([^&amp;#]*)').exec(window.location.href);
  return results[1] || 0;
}
Aftab Uddin
quelle
& ist fälschlicherweise als "& amp;" in der obigen Antwort beziehen Sie sich auf die richtige Antwort stackoverflow.com/a/25359264/73630
Palani
-1

benutze das

$.urlParam = function(name) {
  var results = new RegExp('[\?&amp;]' + name + '=([^&amp;#]*)').exec(window.location.href);
  return results[1] || 0;
}
ddfsf
quelle