2015-10-26 2 views
0

У меня есть метод ajax, который передает данные по ajax. Затем сервер отвечает URL-адресом для загрузки. В большинстве случаев URL-адрес будет отличаться от того, на котором был сделан запрос, но иногда URL-адрес тот же.Javascript перенаправляет или перезагружает

В любом случае, я хочу, чтобы страница перешла к предполагаемому URL-адресу, даже если она просто перезагружает страницу.

Я пробовал метод window.location.href = '', но если текущий URL-адрес совпадает с предполагаемым URL-адресом, ничего не происходит.

Я пробовал метод window.location.replace(url), но это не перезагружает страницу, если текущая === предназначена.

Я пробовал метод window.location.reload(true), но это только хорошо, если текущий URL-адрес совпадает с заданным URL-адресом.

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

Для справки, это/был мое сравнение:

if(window.location.href === response.intended) { 
    window.location.reload(true); 
} else { 
    window.location.replace(response.intended); 
} 

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

+2

** Я пробовал метод window.location.href = '', но если текущий URL-адрес совпадает с предполагаемым URL-адресом, ничего не происходит. ** Вы уверены? – Rayon

+1

есть ли символ '#' в URL-адресе? – rajuGT

+0

@rajuGT иногда будет, я использую закладки бутстрапа. –

ответ

3

Для обеспечения вашей страницы не кэшируются, добавить случайное число в конце URL:

window.location.replace(response.intended + "?rnd" + Math.random()); 
+0

Хорошая идея, не думал об этом подходе! Спасибо за ответ :) –

1

Добавить window.location.hash в новый адрес для сравнения. Если не один он вернет пустую строку

if(window.location.href === response.intended + window.location.hash) { 
0

Как обсуждалось над комментариями, я думаю, что это связано с # характера в URL, что делает браузер, чтобы перейти к конкретному разделу страницы как <a href='33347913'> бирка.

var index = response.intended.indexOf('#'); 
if(index >= 0) { 
    response.intended = response.intended.substr(0, index); 
} 
window.location.href = response.intended; 
Смежные вопросы