Как установить новый параметр запроса в строку запроса, если она не существует, и запросить страницу с новым URL? - PullRequest
0 голосов
/ 03 октября 2019

У меня есть таблица данных. Строки таблицы содержат ссылки. Когда я нажимаю на ссылку, я перенаправляю на ту же страницу, но я обработаю параметр запроса на сервере. Когда я нажму на вторую (другую) ссылку, у меня будет URL с двумя параметрами запроса. Если я нажму на одно и то же, как дважды, у меня не будет двойника.

Для его реализации у меня есть скрипт jQuery:

$('table').find('a').on('click', function(event) {
    event.preventDefault();
    let href = $(this).attr('href');
    href = href.replace(/^.+\?/u, '');
    let splitHref = href.split('=');

    let url = new URL(location.href);

    let queryString = url.search;

    let searchParams = new URLSearchParams(queryString); 

    if (splitHref[0] && splitHref[1]) {
        searchParams.append(splitHref[0], splitHref[1]);                    
    }

    url.search = searchParams.toString();

    let new_url = url.toString();

    console.log(new_url);
})

Но он не работает. Это дает мне странный результат вроде: http://localhost:5000/Events?%3Fcustomerid=15787. Что такое %3F после ? char? И он может добавить только одну линке или заменить только одну ссылку. Не добавлять несколько ссылок.

Для лучшего понимания этой задачи я покажу экран моего пользовательского интерфейса:

enter image description here

После перехода по ссылке я хотел бы иметьновый параметр запроса.

1 Ответ

0 голосов
/ 03 октября 2019

Хорошо, я сделал это! Вот пример сценария. Я ценю любые мнения.

<script>
    $(function() {

        $('table').find('a').on('click', function(event) {
            event.preventDefault();
            let href = $(this).attr('href');
            href = href.replace(/^\?/u, '');

            let splitHref = href.split('=');

            let url = new URL(location.href);

            let queryString = url.search;

            let searchParams = new URLSearchParams(queryString); 
            if (splitHref[0] && splitHref[1]) {
                searchParams.set(splitHref[0], splitHref[1]);                    
            }

            location.search = searchParams;       
        })
    })
</script>

Ошибка была с a тегами. Вот пример a:

<a href="?eventType=<here is a string with my value></a>    

Это был неправильный рег. Это пример из вопроса:

 href = href.replace(/^.+\?/u, '');

Правильное регулярное выражение для этого

href = href.replace(/^\?/u, '');

Я просто заменяю ?. Прежнее регулярное выражение не работает, потому что у меня нет символов в начале строки, только ?.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...