2017-01-18 5 views
5

Здесь я прочитал различные источники и создал следующие способы перенаправления пользователя через 10 секунд. Не используется одновременно.Страница перенаправления не работает последовательно в PHP или JavaScript

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

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

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

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

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

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

Редактировать: Переход на setInterval в версии JavaScript приводит к тому, что он пытается снова.

+0

почему после 10 секунд? – bassxzero

+0

@bassxzero как часть игры для викторины/памяти – Russell

+1

Я не думаю, что проблема связана с командами, но с вашим кодом, и мы не можем помочь вам с такой небольшой информацией. Другим способом обновления/перенаправления страницы является использование 'meta. – GramThanos

ответ

4

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

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

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

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

14

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

Скорее перезагружайте приложение каждые 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> 
1
<!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> 

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

0

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

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

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

window.setTimeout(function(){ 
window.location.replace("?name=Munish"); 
},10000); 
Смежные вопросы