it-swarm.com.de

Abrufen des URL-Parameters jquery oder Abrufen von Abfragezeichenfolgenwerten in js

Ich habe viele jQuery-Beispiele gesehen, bei denen Parametergröße und -name unbekannt sind. Meine URL wird immer nur einen String haben:

http://example.com?sent=yes

Ich möchte nur Folgendes erkennen:

  1. Gibt es sent?
  2. Ist es gleich "Ja"?
564
LeBlaireau

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 nutzen, vorausgesetzt, die URL lautet:
http://dummy.com/?technology=jquery&blog=jquerybyexample.

var tech = getUrlParameter('technology');
var blog = getUrlParameter('blog');
1123
Sameer Kazi

Lösung von 2019

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

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

Existiert gesendet ?

searchParams.has('sent') // true

Ist es gleich mit "Ja"?

let param = searchParams.get('sent')

und dann vergleichen Sie es einfach.

219
Optio

jQuery-Code-Snippet zum Abrufen der in der URL gespeicherten dynamischen Variablen als Parameter und zum Speichern dieser Variablen als JavaScript-Variablen zur Verwendung mit Ihren Skripten:

$.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&param2=&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

Ich klebe das immer als eine Zeile. Nun 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;
}

was du verwenden könntest als:

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

oder

getSearchParams("key1")  //returns val1
83
AwokeKnowing

Vielleicht ist es zu spät. Aber diese Methode ist 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
Benötigt das URL-Plugin: plugins.jquery.com/url
Danke -Ripounet

43
Sariban D'Cl

Noch eine alternative Funktion ...

function param(name) {
    return (location.search.split(name + '=')[1] || '').split('&')[0];
}
42
rodnaph

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

function getQueryParam(param) {
    location.search.substr(1)
        .split("&")
        .some(function(item) { // returns first occurence and stops
            return item.split("=")[0] == param && (param = item.split("=")[1])
        })
    return param
}

was vereinfacht und online noch besser aussieht:

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 codierte 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"
30
Qwerty

URLSearchParams verwenden:

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 sich unterscheiden. Überprüfen Sie dies als kompatible Referenz: https://developer.mozilla.org/en-US/ docs/Web/API/URLSearchParams )

21
Xin

Vielleicht möchten Sie Zahnarzt JS einen Blick darauf werfen? (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 aufrufen (z. B. document.URL.extract ()) und Sie erhalten eine HashMap aller gefundenen Parameter zurück. Es ist auch anpassbar, um mit Trennzeichen und allem umzugehen.

Minimierte Version <1kb

10
kelvintaywl

Dieser ist einfach und hat für mich funktioniert

$.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'));
10
Shuhad zaman
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;
}
5
p_champ

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>
4
Tarun Gupta

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

das ermöglicht es Ihnen, einfach zu tun

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 nur als einfaches Javascript verwenden, die Syntax wäre dann etwas anders.

3

So einfach können Sie jede beliebige 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).

3
ImBS

Das mag übertrieben sein, aber es gibt eine ziemlich beliebte Bibliothek zum Parsen von URIs, die RI.js heißt.

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>
3
alexw

Dies gibt Ihnen ein schönes Objekt zum Arbeiten

    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') { .....
2
Brian F

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

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. 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>
2
userlond
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');
2
Naami

Versuchen Sie diese funktionierende Demo http://jsfiddle.net/xy7cX/

API:

Dies sollte helfen, :)

Code

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

var pieces = url.split("?");
alert(pieces[1] + " ===== " + $.inArray("sent=yes", pieces));
2
Tats_innit

Dies basiert auf der Antwort von Gazoris , aber die URL dekodiert die Parameter, sodass 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;
}
2

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

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

- Kein Verschmutzen des globalen Funktionsnamensraums durch Erweiterung von 'String'

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

- Behandeln von Codierungsproblemen und Akzeptieren (Annehmen) von nicht codierten Parameternamen

- Vermeiden von expliziten for Schleifen

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
1
BaseZen

Eine leichte Verbesserung der Antwort von Sameer: ​​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];
    }
})();
1
streaver91

Mit Vanilla JavaScript können Sie leicht die Parameter (location.search) nehmen, die Teilzeichenfolge (ohne das?) Abrufen und sie in ein Array umwandeln, indem Sie sie durch '&' aufteilen.

Während Sie urlParams durchlaufen, können Sie den String erneut mit '=' teilen und als object [elmement [0]] = element [1] zum 'params'-Objekt 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'];
1
DDT

Kaffeeskript-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++
1
mr.musicman

Wenn Sie einen bestimmten Parameter von einer bestimmten URL finden 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"));
1
Wahid Masud

Was ist, wenn es einen & in 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]);
        }
    }
}
1
user562451

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"];
1
studio-klik

Eine weitere Lösung, die jQuery und JSON verwendet, damit 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

Am nützlichsten ist es, 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 es keine Parameter gibt, ist param nur ein leeres Objekt.

0
Niksuski