ajouter à l'url et actualiser la page

Je cherche à écrire un morceau de javascript qui ajoutera un paramètre à l'url actuelle, puis actualisera la page-Comment puis-je faire cela?

96
demandé sur amateur 2011-05-14 00:33:35

5 réponses

Cela devrait fonctionner (pas testé!)

var url = window.location.href;    
if (url.indexOf('?') > -1){
   url += '&param=1'
}else{
   url += '?param=1'
}
window.location.href = url;
121
répondu Shlomi Komemi 2011-05-13 20:36:42

Plus court que la réponse acceptée, en faisant la même chose, mais en gardant simple:

window.location.search += '&param=42';

Nous n'avons pas à modifier l'url entière, juste la chaîne de requête, connue sous le nom d'attribut de recherche de location.

Lorsque vous attribuez une valeur à l'attribut de recherche, le point d'interrogation est automatiquement inséré par le navigateur et la page est rechargée.

105
répondu Bo Frederiksen 2016-06-02 14:13:25

La plupart des réponses ici suggèrent qu'il faut ajouter le(S) paramètre (s) à L'URL, quelque chose comme l'extrait suivant ou une variation similaire:

location.href = location.href + "&parameter=" + value;

Cela fonctionnera assez bien pour la majorité des cas.

Cependant

Ce n'est pas la bonne façon d'ajouter un paramètre à une URL à mon avis.

Parce que l'approche suggérée ne teste pas si le paramètre est déjà défini dans L'URL, sinon attention on peut se retrouver avec une URL très longue avec le même paramètre répété plusieurs fois. c'est à dire:

https://stackoverflow.com/?&param=1&param=1&param=1&param=1&param=1&param=1&param=1&param=1&param=1

À ce stade, c'est là que les problèmes commencent. L'approche suggérée pourrait et créera une URL très longue après plusieurs actualisations de page, rendant ainsi l'URL invalide. Suivez ce lien pour plus d'informations sur long URL Quelle est la longueur maximale d'une URL dans différents navigateurs?

C'est mon approche suggérée:

function URL_add_parameter(url, param, value){
    var hash       = {};
    var parser     = document.createElement('a');

    parser.href    = url;

    var parameters = parser.search.split(/\?|&/);

    for(var i=0; i < parameters.length; i++) {
        if(!parameters[i])
            continue;

        var ary      = parameters[i].split('=');
        hash[ary[0]] = ary[1];
    }

    hash[param] = value;

    var list = [];  
    Object.keys(hash).forEach(function (key) {
        list.push(key + '=' + hash[key]);
    });

    parser.search = '?' + list.join('&');
    return parser.href;
}

Avec cette fonction, il suffit de faire ce qui suit:

location.href = URL_add_parameter(location.href, 'param', 'value');
58
répondu yeyo 2017-05-23 12:34:44
location.href = location.href + "&parameter=" + value;
2
répondu Paul Alexander 2011-05-13 20:36:10
function gotoItem( item ){
    var url = window.location.href;
    var separator = (url.indexOf('?') > -1) ? "&" : "?";
    var qs = "item=" + encodeURIComponent(item);
    window.location.href = url + separator + qs;
}

Plus compat version

function gotoItem( item ){
    var url = window.location.href;    
    url += (url.indexOf('?') > -1)?"&":"?" + "item=" + encodeURIComponent(item);
    window.location.href = url;
}
2
répondu epascarello 2011-05-13 20:45:08