Перенаправление страницы не работает последовательно в PHP или JavaScript

Я прочитал различные источники здесь и создал следующие способы перенаправить пользователя через 10 секунд. Не работает в то же время.

Первая попытка в PHP:

header("refresh:10;url=?switch=1")

Затем вторая попытка в JavaScript:

window.setTimeout(function () {
location.href = '?switch=1';
}, 10000);

Они оба работают около Все время. Они используются на странице с использованием reve.js (как этот). Иногда, когда фрагменты URL изменяются, страница больше не перенаправляет — хотя, чаще всего, перенаправление действительно работает.

Может кто-нибудь сообщить мне, в чем может быть проблема, или хороший ресурс, чтобы прочитать о проблеме?

Изменить: Изменение на setInterval в версии JavaScript приводит к повторной попытке.

5

Решение

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

«Важно отметить, что заголовки фактически отправляются, когда первый байт выводится в браузер. Если вы заменяете заголовки в своих сценариях, это означает, что размещение операторов echo / print и выходных буферов может фактически влиять на то, какие заголовки отправляются «. — от http://php.net/manual/en/function.header.php Вы можете найти эту страницу полезной для чтения (если вы еще не прошли ее), я нашел ее полезной при возникновении проблем, связанных с заголовками.

Я бы добавил больше контекста (и соответствующего кода) к вашему вопросу, если вы хотите получить более подробные ответы. Мы не можем знать, что не так с кодом, который мы не можем видеть. Если вы включите код, который использует фрагменты URL, которые вы устанавливаете, мы сможем лучше понять, что на самом деле делает ваш код, и, возможно, смогут отследить ошибки, которые вы пропустили. Вот вики на фрагменты. только для полноты. https://en.wikipedia.org/wiki/Fragment_identifier

Наконец, с примером JavaScript я в растерянности. Он отлично работает в моей системе. (хотя перезагрузка может занять несколько микросекунд). Вы можете попробовать использовать setInterval() вместо?

4

Другие решения

Викторина / игра памяти, которая переходит от одного вопроса к другому каждые десять секунд?

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

Очень быстрый пример (не проверенный):

<!doctype html>
<html>
<head>
<title>Example</title>
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
</head>
<body>

Question #<span id="question_number"></span><br />
<p id="question"></p>

<script>
var questionCounter = 0;

function loadQuestion(questionNumber) {
questionCounter++;

$.get( "<your_php_script_url>?question="+questionCounter, function( data ) {
$( "#question_number" ).html( questionCounter );
$( "#question" ).html( data.question );

setTimeout(function() {
loadQuestion(questionCounter);
}, 10000);
});
}
loadQuestion(questionCounter);

</script>

</body>
</html>
14

    <!doctype html>
<html>
<head>
<title>Example</title>
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
</head>
<body>

Question #<span id="question_number"></span><br />
<p id="question"></p>

<script>
var questionCounter = 0;

function loadQuestion(questionNumber) {
questionCounter++;

$.get( "<your_php_script_url>?question="+questionCounter, function( data            ) {
$( "#question_number" ).html( questionCounter );
$( "#question" ).html( data.question );

setTimeout(function() {
loadQuestion(questionCounter);
}, 10000);
});
}
loadQuestion(questionCounter);

</script>

</body>
</html>

Это хороший пример, я тоже использовал этот код.

1

Попробуйте этот простой пример

setTimeout(function() {
window.location='?switch=1'
}, 10000);
0

Используйте этот код JQuery

window.setTimeout(function (){
window.location.replace("?name=Munish");
},10000);
0
По вопросам рекламы [email protected]