Question Obtenir le paramètre url jquery Ou Comment obtenir des valeurs de chaîne de requête dans js


J'ai vu beaucoup d'exemples de jQuery où la taille et le nom du paramètre sont inconnus. Mon URL ne va jamais avoir une seule chaîne:

http://example.com?sent=yes

Je veux juste détecter:

  1. Est-ce que sent exister?
  2. Est-ce égal à "oui"?

458
2017-10-21 09:55


origine


Réponses:


Meilleure solution ici.

var getUrlParameter = function getUrlParameter(sParam) {
    var sPageURL = decodeURIComponent(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 : sParameterName[1];
        }
    }
};

Et c'est comment vous pouvez utiliser cette fonction en supposant que l'URL est,
http://dummy.com/?technology=jquery&blog=jquerybyexample.

var tech = getUrlParameter('technology');
var blog = getUrlParameter('blog');

946
2018-02-20 09:12



l'extrait de code jQuery pour obtenir les variables dynamiques stockées dans l'URL en tant que paramètres et les stocker en tant que variables JavaScript prêtes à être utilisées avec vos scripts:

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

example.com?param1=name&param2=&id=6

$.urlParam('param1'); // name
$.urlParam('id');        // 6
$.urlParam('param2');   // null

exemple de paramètres avec des espaces

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



console.log(decodeURIComponent($.urlParam('city'))); 
//output: Gold Coast

154
2017-08-18 08:39



Solution de 2017 

Nous avons: http://example.com?sent=yes

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

Est-ce que envoyé  exister?

searchParams.has('sent') // true

Est-ce égal à "oui"?

let param = searchParams.get('sent')

et puis juste le comparer.


92
2018-02-20 20:02



Je tiens toujours ça comme une ligne. Maintenant, params a les vars:

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

multi-lignes:

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

en tant que fonction

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

que vous pourriez utiliser comme:

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

ou

getSearchParams("key1")  //returns val1

70
2017-11-04 20:35



Peut-être qu'il est trop tard. Mais cette méthode est très simple et facile

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

METTRE À JOUR
Nécessite le plugin url: plugins.jquery.com/url
Merci -Ripounet


39
2018-03-25 10:48



Ou vous pouvez utiliser cette petite fonction soignée, car pourquoi des solutions compliquées?

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
}

ce qui semble encore mieux quand on est simplifié et onelined:

tl; dr solution d'une ligne

var queryDict = {};
location.search.substr(1).split("&").forEach(function(item) {queryDict[item.split("=")[0]] = item.split("=")[1]})
résultat:
queryDict ['envoyé'] // indéfini ou 'valeur'

Mais si vous avez caractères codés ou clés à plusieurs valeurs?

Vous feriez mieux de voir cette réponse: Comment puis-je obtenir des valeurs de chaîne de requête en JavaScript?

Pic avant

"?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"

28
2017-07-14 16:17



Encore une autre fonction alternative ...

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

24
2017-09-29 10:51



Peut-être voudrez-vous donner Dentiste JS un regard? (avertissement: j'ai écrit le code)

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"

avec Dentist JS, vous pouvez appeler la fonction extract () sur toutes les chaînes (par exemple, document.URL.extract ()) et récupérer un HashMap de tous les paramètres trouvés. Il est également personnalisable pour gérer les délimiteurs et tout.

Version réduite <1kb


10
2017-11-03 00:51