簡體   English   中英

為什么heder('Location:index')不起作用,但是window.location.href ='index.php'起作用?

[英]Why heder('Location:index')not working but window.location.href='index.php' is working?

我有這樣的索引文件

<?php
include('file1.php');
include('file2.php');
?>

在file1.php中,我有如下代碼。

<?php
echo "hai";
?>

我試圖通過使用header('Location:index.php')重定向頁面,它會引發類似於已開始輸出的錯誤。我知道對於header,如果我們給出echo語句會引發錯誤。我正在嘗試使用Javascript window.location.href='index.php'進行重定向。它為我提供了預期的輸出,並且沒有錯誤。為什么?

PHP標頭命令正在向響應流發送一條指令,瀏覽器會將其解釋為重定向到新位置。 但是,從本質上講,您只能在開始發送內容之前發送任何類型的標頭。 在您的示例中,您發送內容“ hai”,然后嘗試發送標頭。

現在,您的javascript由javascript引擎在瀏覽器中執行。 因此,window.location告訴javascript引擎使瀏覽器請求新頁面。 這與http流中包含的任何信息無關(理論上,該位置可以是http以外的其他內容,例如ftp或mailto)。

嘗試添加ob_start(); 在您的PHP文件的開頭。 這將打開輸出緩沖,收集腳本生成的所有輸出,並等到執行結束,然后再將輸出“刷新”到瀏覽器。 您可以使用ob_end_flush();強制刷新ob_end_flush();

更多信息: http : //us3.php.net/ob_start

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM