jQuery/JavaScript - обновить текущую страницу с добавленным параметром запроса?
У меня есть выпадающее меню в форме, и когда пользователь выбирает что-то из него, мне нужно перезагрузить текущую страницу с добавленным параметром в строке запроса.
Как мне это реализовать?
5 ответ(ов)
Это старый вопрос, но он появился первым в результатах поиска 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'});
Такой подход позволяет динамически формировать адрес с необходимыми параметрами.
Этот код в обработчике события 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.
Если вы выберете ответ с самым высоким рейтингом, возможно, имеет смысл заменить
http://
в коде на
window.location.protocol
чтобы это работало и с другими протоколами, такими как https или file. Таким образом, код будет выглядеть следующим образом:
window.location.href = window.location.protocol + "//" + window.location.host + window.location.pathname + '?' + params.join('&');
Если вам нужен простой способ сохранить строку запроса и, возможно, добавить к ней новые параметры, вы можете использовать window.location.search
. Вот пример кода:
var search = window.location.search + (window.location.search ? "&" : "?");
search += "param1=foo¶m2=bar";
window.location.href = window.location.protocol + "//" + window.location.host + window.location.pathname + search;
Конечно, вы можете использовать более сложные методы для построения остальной части вашей строки запроса, как показано в других примерах, но ключевым моментом является использование Location.search
.
Если у вас возникла задача открыть определенную вкладку после перезагрузки страницы, вы можете просто добавить #tabs-4
к текущему URL. Хотя это не совсем относится к данной теме, возможно, это поможет другим, кто столкнется с похожей проблемой, как и я.
Используя следующий код:
window.location = window.location.pathname + window.location.search + '#tabs-4';
у меня не получилось добиться желаемого результата, но вот код, который сработал:
location = "#tabs-4";
location.reload(true);
Таким образом, этот способ сработал и после перезагрузки страницы открылась нужная вкладка.
Как перенаправить на другую веб-страницу?
Прокрутка к элементу с использованием jQuery
Как определить нажатие клавиши Esc?
Как получить данные формы с помощью JavaScript/jQuery?
Как выполнить код после сброса HTML-формы с помощью jQuery?