Подтвердить что ты не робот

Как удалить строку запроса из URL после загрузки страницы?

У меня есть URL с длинной строкой запроса, прикрепленной к нему. После загрузки страницы я не требую строки запроса. Поэтому я хочу удалить строку запроса из адресной строки без перезагрузки страницы.

Я пробовал parent.location.hash = ''; и window.location.href = '/#'

Они ничего не изменили.

4b9b3361

Ответ 1

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

Хотя вы можете сделать это в HTML5 (который будет работать только в браузерах, поддерживающих его), используя новый API истории, но реалистично, ваш сценарий лучше всего требует переписать вместо того, чтобы включать это (кажется, кувалдой взломать орех).

Как вы сказали, вам не нужна строка запроса после загрузки страницы, вам действительно следует отправить назад, а затем перенаправить на другой URL-адрес после завершения обработки.

Ответ 2

Как говорили другие, вы можете сделать это с помощью API истории в современных браузерах (IE10 +, FF4 +, Chrome5 +). В ответах не было полного примера, поэтому я решил поделиться своим решением, поскольку у меня просто было требование сделать то же самое:

history.pushState(null, "", location.href.split("?")[0]);

Если вы используете Modernizr, вы также можете проверить, доступен ли API истории так:

if (Modernizr.history) {
    history.pushState(null, "", location.href.split("?")[0]);
}

Ответ 3

Это возможно в современных браузерах, используя историю api, но, вероятно, это не лучшее решение вашей проблемы.

history.replaceState({}, 'some title', '/');

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

Поскольку вы не хотите поддерживать URL-адрес, он не будет полезен для закладок, поэтому вполне вероятно, что вам будет лучше делать запрос POST.

Это говорит о том, что вы должны использовать шаблон POST-Redirect-GET.

Ответ 4

Используйте history.replaceState({}, "Title", "page.html");

тот же синтаксис для pushState. Однако вам нужно будет найти способ заставить IE понять это.

Лучшим способом было бы использовать модуль Apache mod_rewrite. Он довольно прост в использовании.

Ответ 5

Я использую этот фрагмент кода в своих личных проектах, где мне нужно удалить параметры URL без повторной загрузки:

var newURL = location.href.split("?")[0];
window.history.pushState('object', document.title, newURL);

Ответ 6

Вы можете вообще избежать строки запроса, используя POST вместо GET.

Ответ 7

Обновленный код Теперь он будет работать

Просто добавьте ниже код на свою страницу, чью ссылку вы хотите изменить.

// javascript function

   function buildLin(first) {
    var firs = first.toString()
       //alert(firs);
       //document.getElementById("team").value = "1";
           document.location.hash = "#" + firs.replace(/ /g, "_");
        //alert(document.location.hash);
    }

 //jQuery to call above function after page loads

  $(document).ready(function () {
      buildLin(2);
  });

Не забудьте добавить http://code.jquery.com/jquery-latest.js  на твоей странице

Ответ 8

Я столкнулся с той же проблемой. Моим решением было следующее: Получите запрос следующим образом:

operation.aspx?opr=lock

После завершения операции переадресуйте следующим образом:

Response.Redirect("operation.aspx");

В ответе, если есть какое-либо сообщение, я печатаю их следующим образом:

if (Session["InfoMessages"] != null)
{
    lblMessage.Text = (string)Session["InfoMessages"];
    Session["InfoMessages"] = null;
}

Я надеюсь, что это поможет другим:)