0

jQuery/JavaScript - обновить текущую страницу с добавленным параметром запроса?

26

У меня есть выпадающее меню в форме, и когда пользователь выбирает что-то из него, мне нужно перезагрузить текущую страницу с добавленным параметром в строке запроса.

Как мне это реализовать?

5 ответ(ов)

0

Это старый вопрос, но он появился первым в результатах поиска Google.

Решение, которое я выбрал, похоже на то, что предложил jAndy.

window.location.pathname возвращает URL страницы без строки запроса. Затем я создаю строку запроса с помощью "?"+$.param({'foo':'bar','base':'ball'}), которую потом добавляю к pathname и устанавливаю в window.location.href.

window.location.href = window.location.pathname + "?" + $.param({'foo':'bar', 'base':'ball'});

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

0

Этот код в обработчике события change сделает то, что вам нужно.

Например:

$('#my_dropdown_id').bind('change', function(){
    var params = [
        "foo=bar",
        "base=" + $(this).val()
    ];

    window.location.href = "http://" + window.location.host + window.location.pathname + '?' + params.join('&');
});

Здесь мы создаем массив params, который включает в себя фиксированный параметр "foo=bar" и параметр "base", значение которого устанавливается на основе значения выбранного элемента выпадающего списка. Затем мы изменяем URL-адрес текущей страницы, добавляя к нему параметры запроса, объединяя их с помощью join('&'). Это позволяет обновить страницу с новыми параметрами в URL.

0

Если вы выберете ответ с самым высоким рейтингом, возможно, имеет смысл заменить

http://

в коде на

window.location.protocol

чтобы это работало и с другими протоколами, такими как https или file. Таким образом, код будет выглядеть следующим образом:

window.location.href = window.location.protocol + "//" + window.location.host + window.location.pathname + '?' + params.join('&');
0

Если вам нужен простой способ сохранить строку запроса и, возможно, добавить к ней новые параметры, вы можете использовать window.location.search. Вот пример кода:

var search = window.location.search + (window.location.search ? "&" : "?");
search += "param1=foo&param2=bar";
window.location.href = window.location.protocol + "//" + window.location.host + window.location.pathname + search;

Конечно, вы можете использовать более сложные методы для построения остальной части вашей строки запроса, как показано в других примерах, но ключевым моментом является использование Location.search.

0

Если у вас возникла задача открыть определенную вкладку после перезагрузки страницы, вы можете просто добавить #tabs-4 к текущему URL. Хотя это не совсем относится к данной теме, возможно, это поможет другим, кто столкнется с похожей проблемой, как и я.

Используя следующий код:

window.location = window.location.pathname + window.location.search + '#tabs-4';

у меня не получилось добиться желаемого результата, но вот код, который сработал:

location = "#tabs-4";
location.reload(true);

Таким образом, этот способ сработал и после перезагрузки страницы открылась нужная вкладка.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь