785 Stimmen

Wie man URL-Parameter mit jQuery oder reinem JavaScript abruft?

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

Meine URL wird immer nur eine Zeichenfolge haben:

http://beispiel.com?sent=yes

Ich möchte nur erkennen:

  1. Existiert sent?
  2. Ist es gleich "yes"?

4voto

ImBhavin95 Punkte 1444

So einfach, dass Sie jede URL verwenden und den Wert abrufen können

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

Verwendungsbeispiel

// Abfragezeichenfolge: ?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 (value2).

3voto

Michael Konečný Punkte 1618

Es gibt diese tolle Bibliothek: https://github.com/allmarkedup/purl

mit der du einfach tun kannst

url = 'http://example.com?sent=yes';
sent = $.url(url).param('sent');
if (typeof sent != 'undefined') { // sent existiert
   if (sent == 'yes') { // sent entspricht yes
     // ...
   }
}

Das Beispiel geht davon aus, dass du jQuery verwendest. Du könntest es auch einfach als reinen JavaScript verwenden, die Syntax wäre dann ein wenig anders.

3voto

Naami Punkte 351
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 individuelle Parameterwerte abrufen:

getUrlParameter('sent');

2voto

Stephen Ostermiller Punkte 20753

Dies basiert auf der Antwort von Gazoris, decodiert jedoch die URL-Parameter, damit sie verwendet werden können, wenn sie Daten enthalten, die nicht nur aus Zahlen und Buchstaben bestehen:

function urlParam(name){
    var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
    // Die URL-Parameter müssen decodiert werden, einschließlich einer Lösung für das Pluszeichen
    // https://stackoverflow.com/a/24417399
    return results ? decodeURIComponent(results[1].replace(/\+/g, '%20')) : null;
}

2voto

userlond Punkte 3446

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

Das Beispiel beantwortet die Fragen genau so, wie sie gestellt wurden.

var url = 'http://example.com?sent=yes';
var urlParams = new URI(url).search(true);
// 1. Existiert "sent"?
var sendExists = urlParams.sent !== undefined;
// 2. Ist es gleich "yes"?
var sendIsEqualtToYes = urlParams.sent == 'yes';

// Ergebnisse in lesbarer Form ausgeben
// nicht für die Produktion erforderlich
if (sendExists) {
  console.log('Die URL hat den Parameter "sent", dessen Wert "' + urlParams.sent + '" lautet');
  if (urlParams.sent == 'yes') {
    console.log('Der Parameter "sent" entspricht "yes"');
  } else {
    console.log('Der Parameter "sent" entspricht nicht "yes"');
  }
} else {
  console.log('Die URL hat keinen Parameter "sent"');
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X