Как обновить страницу с помощью jQuery, передав параметр в URL - PullRequest
39 голосов
/ 08 марта 2011

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

location.reload();

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

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

Ex:

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

  www.myweb.com?single

Спасибо

Ответы [ 9 ]

48 голосов
/ 25 августа 2012

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

window.location.href = window.location.href.replace( /[\?#].*|$/, "?single" );
46 голосов
/ 08 марта 2011

Вы должны быть в состоянии сделать это, используя location.href

if(window.location.hostname == "www.myweb.com"){
   window.location.href = window.location.href + "?single";
}
9 голосов
/ 07 марта 2018

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

var url = new URL(window.location.href);
url.searchParams.set('single','');
window.location.href = url.href;
3 голосов
/ 13 ноября 2014

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

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

if (!window.location.hash) 
    {
        window.location.replace(window.location.href + "?single")
    } 
2 голосов
/ 27 октября 2015

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

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

2 голосов
/ 03 июля 2012

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

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

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

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

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

2 голосов
/ 08 марта 2011

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

1 голос
/ 08 марта 2011
var singleText = "single";
var s = window.location.search;

if (s.indexOf(singleText) == -1) {
    window.location.href += (s.substring(0,1) == "?") ? "&" : "?" + singleText;
}
0 голосов
/ 29 апреля 2014

Я использую 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;
}
...