Я хочу написать часть javascript, которая добавит параметр к текущему URL-адресу, а затем обновит страницу - как я могу это сделать?
Добавить на страницу URL и обновить страницу
Ответ 1
это должно работать (не проверено!)
var url = window.location.href;
if (url.indexOf('?') > -1){
url += '¶m=1'
}else{
url += '?param=1'
}
window.location.href = url;
Ответ 2
Короче принятого ответа, делая то же самое, но сохраняя его просто:
window.location.search += '¶m=42';
Нам не нужно изменять весь URL-адрес, просто строку запроса, известную как атрибут поиска местоположения.
Когда вы назначаете значение атрибуту поиска, знак вопроса автоматически вставляется браузером и страница перезагружается.
Ответ 3
В большинстве ответов здесь предлагается добавить параметр к URL-адресу, что-то вроде следующего фрагмента или аналогичного варианта:
location.href = location.href + "¶meter=" + value;
Это будет хорошо работать для большинства случаев.
Однако
Это не правильный способ добавления параметра к URL-адресу, на мой взгляд.
Поскольку предлагаемый подход не проверяет, установлен ли параметр в URL-адресе, если он не является осторожным, у вас может быть очень длинный URL-адрес с тем же параметром, который повторяется несколько раз. то есть:
https://stackoverflow.com/?¶m=1¶m=1¶m=1¶m=1¶m=1¶m=1¶m=1¶m=1¶m=1
в этот момент возникают проблемы. Предлагаемый подход может и будет создавать очень длинный URL-адрес после обновления нескольких страниц, что делает URL-адрес недействительным. Следуйте этой ссылке для получения дополнительной информации о длинном URL Какова максимальная длина URL-адреса в разных браузерах?
Это мой предложенный подход:
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;
}
С помощью этой функции нужно будет сделать следующее:
location.href = URL_add_parameter(location.href, 'param', 'value');
Ответ 4
location.href = location.href + "¶meter=" + value;
Ответ 5
function gotoItem( item ){
var url = window.location.href;
var separator = (url.indexOf('?') > -1) ? "&" : "?";
var qs = "item=" + encodeURIComponent(item);
window.location.href = url + separator + qs;
}
Дополнительная версия совместимости
function gotoItem( item ){
var url = window.location.href;
url += (url.indexOf('?') > -1)?"&":"?" + "item=" + encodeURIComponent(item);
window.location.href = url;
}
Ответ 6
Пожалуйста, проверьте код ниже:
/*Get current URL*/
var _url = location.href;
/*Check if the url already contains ?, if yes append the parameter, else add the parameter*/
_url = ( _url.indexOf('?') !== -1 ) ? _url+'¶m='+value : _url+'?param='+value;
/*reload the page */
window.location.href = _url;
Ответ 7
Одно небольшое исправление для @yeyo вдумчивого ответа выше.
Изменить:
var parameters = parser.search.split(/\?|&/);
Для того, чтобы:
var parameters = parser.search.split(/\?|&/);
Ответ 8
Попробуй это
var url = ApiUrl('/customers');
if(data){
url += '?search='+data;
}
else
{
url += '?page=${page}&per_page=${perpage}';
}
console.log(url);