2017-01-18 16 views
5

Tôi đã đọc nhiều nguồn khác nhau ở đây và đã tạo các cách sau để chuyển hướng người dùng sau 10 giây. Không được sử dụng cùng một lúc.Chuyển hướng trang không hoạt động liên tục trong PHP hoặc JavaScript

nỗ lực đầu tiên trong PHP:

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

Sau đó, nỗ lực thứ hai trong JavaScript:

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

Cả hai đều làm việc gần tất cả thời gian. Chúng được sử dụng trên một trang bằng cách sử dụng reveal.js (like this one). Đôi khi, khi các đoạn URL thay đổi, trang không còn chuyển hướng nữa - mặc dù, thường xuyên hơn không, chuyển hướng thực sự hoạt động.

Bất kỳ ai cũng có thể cho tôi biết vấn đề có thể là gì hoặc tài nguyên tốt để đọc về vấn đề này?

Chỉnh sửa: Thay đổi thành setInterval trong phiên bản JavaScript dẫn đến kết quả thử lại.

+0

tại sao sau 10 giây? – bassxzero

+0

@bassxzero như một phần của trò chơi đố/bộ nhớ – Russell

+1

Tôi không nghĩ rằng vấn đề là với các lệnh nhưng với mã của bạn và chúng tôi không thể giúp bạn với quá ít thông tin. Ngoài ra, một cách khác để làm mới/chuyển hướng trang là bằng cách sử dụng thẻ meta ''. – GramThanos

Trả lời

4

Khi cài đặt tiêu đề với php bạn phải làm như vậy trước khi bất kỳ sản lượng được tạo ra, nó có thể là bạn đang tạo ra một số loại đầu ra trong những hoàn cảnh nhất định trước khi tiêu đề php được đặt.

"Điều quan trọng cần lưu ý là tiêu đề thực sự được gửi khi byte đầu tiên xuất ra trình duyệt. Nếu bạn thay thế tiêu đề trong tập lệnh của mình, điều này có nghĩa là vị trí của echo/print statements và bộ đệm đầu ra tiêu đề nào được gửi đi. " - từ http://php.net/manual/en/function.header.php Bạn có thể thấy trang đó là bài đọc hữu ích (Nếu bạn chưa đọc hết), tôi thấy nó hữu ích khi gặp phải các vấn đề liên quan đến tiêu đề.

Tôi sẽ thêm nhiều ngữ cảnh (và mã có liên quan) vào câu hỏi của bạn nếu bạn muốn có thêm câu trả lời chuyên sâu. Chúng tôi không thể biết có gì sai với mã mà chúng tôi không thể nhìn thấy. Nếu bạn bao gồm mã sử dụng các đoạn URL bạn đang thiết lập, chúng tôi có thể hiểu rõ hơn về mã của bạn thực sự đang làm gì và có thể gặp lỗi mà bạn đã bỏ lỡ. Đây là một wikki trên mảnh vỡ. chỉ để hoàn thành. https://en.wikipedia.org/wiki/Fragment_identifier

Cuối cùng, với ví dụ JavaScript tôi đang thua lỗ. Nó hoạt động tốt trên hệ thống của tôi. (mặc dù tải lại có thể là một vài micro giây). Bạn có thể thử sử dụng setInterval() thay thế?

14

Trò chơi đố/bộ nhớ di chuyển từ một câu hỏi này sang câu hỏi khác sau mỗi mười giây?

Thay vì tải lại ứng dụng sau mỗi giây x, hãy tạo ứng dụng một trang để lấy dữ liệu từ tập lệnh PHP của bạn và sau đó hiển thị nó sau mỗi x giây.

Một ví dụ rất nhanh (không kiểm tra):

<!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> 

đây là ví dụ hay, tôi cũng đã sử dụng mã này.

0

Hãy thử ví dụ này đơn giản như vậy

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

Sử dụng này mã jquery

window.setTimeout(function(){ 
window.location.replace("?name=Munish"); 
},10000); 
Các vấn đề liên quan