Удалите строку запроса перед добавлением параметров URL - PullRequest
0 голосов
/ 02 мая 2018

Я хочу удалить строку запроса из моего URL-адреса, прежде чем добавить параметры URL-адреса. Скажем, мой сайт https://www.abcd.com/test Я добавляю некоторые параметры в мой URL, например / def? Key = value через javascript. Но страница построена как https://www.abcd.com/test?/def?key=value. Я хочу, чтобы она была https://www.abcd.com/test/def?key=value Ниже приведен мой код. Любой вклад приветствуется.

redirectURL: function() {
    var currentURL = window.location.href;

    var kvp = document.location.search.substr(1).split('&');
    if (kvp == '') {
        if (currentURL.indexOf("def") == -1){ 
            document.location.search = '/def'+ '?' + 'key' + '=' + 'value';
        }else{
            document.location.search = '?' + 'key' + '=' + 'value';
        }
    }
    else {
        var i = kvp.length; var x; while (i--) {
            x = kvp[i].split('=');

            if (x[0] == key) {
                x[1] = value;
                kvp[i] = x.join('=');
                break;
            }
        }

        if (i < 0) { kvp[kvp.length] = [key, value].join('='); }

        document.location.search = kvp.join('&');
    }
}

1 Ответ

0 голосов
/ 02 мая 2018

Вы добавляете свои параметры URL к свойству location.search, которое является строкой запроса:

document.location.search = '/def'+ '?' + 'key' + '=' + 'value';

Я считаю, что вы хотите добавить параметры URL к свойству location.href, но сначала вам нужно отделить существующую строку search (querystring) от нее:

var urlBase = window.location.href.split('?')[0];
window.location.href = urlBase + '/def'+ '?' + 'key' + '=' + 'value';
...