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 并将您的内容包装在 &lt;html&gt;&lt;/html&gt; 标记中。

【讨论】:

如果 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 不工作的主要内容,如果未能解决你的问题,请参考以下文章

jquery刷新iframe页面的方法

简单的JavaScript图像延迟加载库Echo.js

javascript 连接到Amazon Echo按钮

javascript 连接到Amazon Echo按钮

echo Javascript window.location.href 不工作

使用 php echo 解析 javascript 代码