Как обновить страницу с помощью jQuery, передав параметр в URL

Я обновляю свою страницу с помощью jQuery:

location.reload();

Это отлично работает, но я хочу обновить ту же страницу, передав параметр в URL.

Как я могу это сделать с помощью jQuery?

Ex:

Если мой URL-адрес www.myweb.com, я хочу обновить его, передав такой параметр

  www.myweb.com?single

Спасибо


person KillerFish    schedule 08.03.2011    source источник
comment
обновил свой ответ, чтобы проверить уже измененный URL   -  person Kris Ivanov    schedule 08.03.2011
comment
Если это буквально то, что вы хотите, большинство ответов здесь будут работать. Но если вы действительно хотите перезагрузить страницу с измененными параметрами запроса, обратитесь к моему ответу: stackoverflow.com/a/33361578/1450294   -  person Michael Scheper    schedule 27.10.2015


Ответы (9)


Вы можете сделать это с помощью location.href.

if(window.location.hostname == "www.myweb.com")
   window.location.href += "?single";
person Mark Coleman    schedule 08.03.2011
comment
Спасибо, это отлично работает. Но при следующем обновлении возникают проблемы. - person KillerFish; 08.03.2011
comment
Первый URL-адрес: www.myweb.com/?ингл-адрес во второй раз: www.myweb.com/?single?single Как избежать повторения параметров? - person KillerFish; 08.03.2011
comment
вместо использования .hostname вы можете попробовать использовать href, так как это будет полный URL. другие параметры объекта местоположения находятся здесь: developer.mozilla.org/en/DOM/ window.location - person Mark Coleman; 08.03.2011
comment
@KillerFish: менее хакерское решение: stackoverflow.com/a/33361578/1450294 - person Michael Scheper; 27.10.2015

Я бы использовал REGEX с .replace следующим образом:

window.location.href = window.location.href.replace( /[\?#].*|$/, "?single" );
person Rui Seixas Monteiro    schedule 25.08.2012
comment
Этот метод очень хорош, потому что он не добавляет параметр к существующим параметрам! - person Benny Neugebauer; 21.04.2013
comment
@BennyNeugebauer: Иногда, тем не менее, вам нужно сохранить существующие параметры. В таких случаях см. Здесь: stackoverflow.com/a/33361578/1450294 - person Michael Scheper; 27.10.2015
comment
Шикарное решение! Я искал повсюду, чтобы найти это. - person Json; 02.09.2016

Вы можете использовать Javascript URLSearchParams.

var url = new URL(window.location.href);
url.searchParams.set('single','');
window.location.href = url.href;

[ОБНОВЛЕНИЕ]: Если требуется поддержка IE, проверьте эту ветку:

SCRIPT5009: 'URLSearchParams' не определен в IE 11

Спасибо @ john-m за разговор о поддержке IE

person Fábio Nicolau de Lima    schedule 07.03.2018
comment
Если требуется поддержка IE, проверьте этот поток: stackoverflow.com/questions/45758837/ - person Fábio Nicolau de Lima; 31.07.2019

Важна краткость: я предпочитаю window.location = "?single"; или window.location += "?single";

person Ori    schedule 08.03.2011

если window.location.hash пусто, вы не можете присвоить location.href новое значение без использования правильной функции (по крайней мере, проверено в chrome).

попробуйте window.location.replace:

if (!window.location.hash) 
    {
        window.location.replace(window.location.href + "?single")
    } 
person Eyal Ch    schedule 13.11.2014

Вы могли просто сделать:

var varAppend = "?single";
window.location.href = window.location.href.replace(".com",".com" + varAppend);

В отличие от других предоставленных ответов, здесь нет ненужной условной проверки. Если вы правильно спроектируете свой проект, вы позволите интерфейсу принимать решение и вызывать этот оператор всякий раз, когда инициируется событие.

Поскольку в вашем URL будет только один ".com", он просто заменит .com на .com?single. Я просто добавил varAppend на тот случай, если вы хотите упростить изменение кода в будущем с помощью различных типов переменных URL.

Еще одно замечание: .replace работает путем добавления к href, поскольку href возвращает строку, содержащую полную информацию об адресе URL.

person sksallaj    schedule 03.07.2012

Щелкните эти ссылки, чтобы увидеть эти более гибкие и надежные решения. Это ответы на аналогичный вопрос:

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

person Michael Scheper    schedule 27.10.2015

Я использую JQuery Load, чтобы справиться с этим, отлично работает для меня. посмотрите мой код из моего проекта. Мне нужно обновить аргументы, чтобы поместить переменную Javascript в php

if (isset($_GET['language'])){
    $language = $_GET['language'];
}else{
    echo '<script>';    
    echo '  var userLang = navigator.language || navigator.userLanguage;';
    echo '  if(userLang.search("zh") != -1) {';
    echo '      var language = "chn";';
    echo '  }else{';
    echo '      var language = "eng";';
    echo '  }';
    echo '$("html").load("index.php","language=" + language);';
    echo '</script>';
    die;
}
person Berry van Zanten    schedule 29.04.2014
comment
Или просто добавьте URL-адрес в дом, а затем используйте jquery, чтобы вытащить его из параметра. Нет необходимости во всем коде javascript - person ProfileTwist; 10.03.2015

Я использовал именно эту вещь раньше, у меня есть настраиваемая функция, которую я использовал для оператора if, как упомянуто Марком Коулманом, а также отправил более короткую версию своего ответа, но просто для удовольствия, вот моя версия

function isOfType(sParam) {
   var sPageURL = window.location.search.substring(1);
   var sURLVariables = sPageURL.split('&');
   var sParameterName = sURLVariables[0];
   return (sParameterName.toLowerCase() == sParam)
}

как только у вас есть эта функция, вы будете использовать ее так

if(!isOfType('single'))
    window.location.href += '?single';
person Jean Pierre    schedule 07.05.2021
comment
В 2021 году в этом ответе нет особого смысла. Все современные браузеры теперь поддерживают URLSearchParam.has () - ›разработчик .mozilla.org / en-US / docs / Web / API / URLSearchParams / содержит - person Bart Jolling; 07.05.2021