web-dev-qa-db-ja.com

エコーJavascriptwindow.location.hrefが機能しない

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;
   }
} 
_
6
zed

ブラウザは応答をプレーンテキストとして扱います。

応答の前にContent-Type: text/html\nを追加し、コンテンツを<html></html>タグで囲みます。

4

この方法を試してください。

<?php
$yourURL="http://www.stackoverflow.com";
echo ("<script>location.href='$yourURL'</script>");
?>
1

出力バッファリング を使用するだけで、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();
?>
1
John Conde