jQuery удаляет хеш-значение из URL-адреса

У меня есть жестко закодированный URL-адрес:

https://bupacouk.bwa.local.internal.bupa.co.uk/cash-plan-quote/quoteAction.do?getBenefitLevelDetails=getBenefitLevelDetails&productPolicyId=7841#a1

Когда Javascript включен, мне не нужно хеш-значение в конце, так как мне его удалить?

Когда Javascript отключен, он должен присутствовать.

Спасибо.

РЕДАКТИРОВАТЬ

Вот AJAX jQuery, который я использую. Итак, я передаю жестко закодированный URL-адрес той же странице на сервере и извлекаю из нее таблицу:

        // Find href of current tab
    var $tabValue = $(this).attr('href');

    // AJAX new table in
    $.ajax({
        type: "GET",
        cache: false,
        url: $(this).attr('href'),
        success: function(data){

        // Find benefit wrap
        $(data).find('.benefitWrap').each(function(){
            // get the contents
            var $benefitWrap = $(this).html();
            // replace contents on page
            $('.benefitWrap').replaceWith($('<div class="benefitWrap">' + $benefitWrap + '</div>'));

        });

       }

    });

person RyanP13    schedule 05.03.2010    source источник
comment
Пожалуйста, предоставьте больше информации. На что похож ваш jQuery?   -  person    schedule 05.03.2010


Ответы (4)


оригинальный

Это зависит от того, что делает хеш-значение. Если он просто перемещает документ вниз к #a1, вам просто нужно установить scrollTop в 0 после того, как документ, вероятно, был загружен.

редактировать

глядя на другие вопросы stackoverflow,

parent.location.hash = ''

должен сделать это, но возможно перезагружает страницу (вы должны это проверить)

Кроме этого, я советую вам обрабатывать это во время/до ваших вызовов AJAX, т.е.

if (hash != 'a1'){ doAjax(); } //pseudocode obviously.

редактировать 2 с кодом на основе опубликованного кода

Или, если вам просто нужно вызвать AJAX с url без хеша, вы можете удалить его в строке, которая вызывает jQuery, нет?

var $tabValue = $(this).attr('href');
var $withoutHash = $tabValue.substr(0,$tabValue.indexOf('#'));

мы в основном получаем href до первого #

person Adam Kiss    schedule 05.03.2010
comment
Мне нужно полностью удалить его, так как это приводит к сбою AJAX. - person RyanP13; 05.03.2010

Простой window.location.hash="" сделает это.

person Steve Chab    schedule 13.12.2011
comment
Вам не нужно использовать jQuery для выполнения этого оператора. - person David Christiansen; 20.01.2012
comment
хм.. это оставляет меня с mypage.htm# ... я что-то пропустил? я хотел бы увидеть mypage.htm - person ptim; 18.04.2013
comment
С этим решением некоторые браузеры оставляют хэш в конце, а некоторые нет. - person Steve Chab; 23.04.2013

Это может быть полезно для тех, кто задает тот же вопрос, как вытащить данные после # в href.

this.hash.slice(1);

Это даст #123 как 123.


Изменить: я, вероятно, должен отметить, что если вы собираетесь вычислять числа из этих данных, лучше всего использовать parseInt(this.hash.slice(1));, иначе вы получите странные результаты.

person Spiderkeg    schedule 01.03.2012

Это работает для меня. Я добавил !, чтобы страница не прокручивалась вверх.

window.location.hash="!";
person Alvin Konda    schedule 11.07.2019
comment
Замечательно. Не могу поверить, что задал этот вопрос почти десять лет назад, лол. - person RyanP13; 12.07.2019