echo Javascript window.location.href 不工作
Posted
技术标签:
【中文标题】echo Javascript window.location.href 不工作【英文标题】:echo Javascript window.location.href not working 【发布时间】:2012-04-24 02:50:48 【问题描述】:我有一个回显 javascript 以导航到不同页面的函数。导航发生时,
echo 'window.location.href="'.$url.'";';
不起作用,只是将其打印在屏幕上。
"window.location.href="./index.php";
我这样使用我的函数:redirect("./index.php");
我的php函数如下
function redirect($url)
if (!headers_sent())
header('Location: '.$url);
exit;
else
echo '<script type="text/javascript">';
echo 'window.location.href="'.$url.'";';
echo '</script>';
echo '<noscript>';
echo '<meta http-equiv="refresh" content="0;url='.$url.'" />';
echo '</noscript>'; exit;
【问题讨论】:
您的 $url 应该正确转义以防它包含“。无论如何,该页面是 html 页面吗?浏览器可能会将其解释为纯文本。此外,有点迂腐,HTTP规范规定 Location 后面应该有一个完整的 URI,而不是相对 URL。 它是一个 php 页面。我的项目要求我提供相对 URL,因此我别无选择。 PHP 页面并不意味着它会自动解释为 HTML。 【参考方案1】:您的浏览器将响应视为纯文本。
在您回复之前添加 Content-Type: text/html\
n 并将您的内容包装在 <html></html>
标记中。
【讨论】:
如果 headers_sent()。他不能完全发送 Content-Type 标头,可以吗? 标签可能会强制浏览器将其视为 HTML。 这行得通。我所做的只是在函数的开头添加一个 echo "",在函数的末尾添加一个 echo ""。【参考方案2】:试试这个方法。
<?php
$yourURL="http://www.***.com";
echo ("<script>location.href='$yourURL'</script>");
?>
【讨论】:
不起作用。它返回疼痛文本 location.href='./index.php'【参考方案3】:为什么不直接使用output buffering 而完全不用处理 JavaScript 或元重定向?
<?php
// Top of your page
ob_start();
// Code goes here
// Redirect
if ($redirect_is_necessary)
header('Location: '.$url);
exit;
// Rest of page goes here
// Bottom of page
ob_end_flush();
?>
【讨论】:
谢谢。这工作得很好。但是我希望只有 javascript 重定向。以上是关于echo Javascript window.location.href 不工作的主要内容,如果未能解决你的问题,请参考以下文章