为什么header('Location:index')不起作用但window.location.href ='index.php'正常工作?

时间:2010-11-01 04:14:07

标签: php javascript

我有像这样的索引文件

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

我有如下代码。

<?php
echo "hai";
?>

我正在尝试使用header('Location:index.php')重定向页面。它会抛出一个类似于输出已经开始的错误。我知道如果我们给出echo语句它会引发错误。在这种情况下我正在尝试使用Javascript window.location.href='index.php'重定向。它给了我预期的输出,没有错误。为什么?。

2 个答案:

答案 0 :(得分:4)

PHP header命令正在向响应流发送一条指令,浏览器将该指令解释为重定向到新位置。但是,就其性质而言,您只能在开始发送内容之前发送任何类型的标头。在您的示例中,您发送内容“hai”然后尝试发送标题。

现在你的javascript由javascript引擎在broswer中执行。因此,window.location告诉javascript引擎使浏览器请求新页面。这与http流中包含的任何信息无关(理论上,该位置可能不是http,例如ftp或mailto)。

答案 1 :(得分:0)

尝试在PHP文件的开头添加ob_start();。这将打开输出缓冲,收集脚本生成的所有输出,并等待执行结束,然后将输出“刷新”到浏览器。您可以使用ob_end_flush();

强制刷新

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