2012-04-11 13 views
5

私はJavaScriptをエコーし​​て別のページに移動する機能を持っています。ナビゲーションが行われている間、エコーJavascript window.location.hrefが動作しません

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; 
    } 
} 
+0

があなたの$ URLが正しく場合にエスケープする必要がありますそれは」。とにかく、ページはHTMLページです?ブラウザはプレーンテキストとしてそれをinterprettingされる可能性があります。また、少し知識をひけらかすされ、HTTPの仕様のおもむくままに含まれています相対URLではなく完全なURIを持たなければなりません – Corbin

+0

私のプロジェクトでは、相対URLを指定する必要があるため、その選択肢はありません – zed

+0

PHPページが自動的にHTMLとして解釈されるわけではありません。 – Corbin

答えて

4

を次のようにお使いのブラウザは平文として応答を扱うです。

返信a Content-Type: text/html\ nさらに<html></html>タグ内にコンテンツをラップします。

+0

の場合headers_sent()。彼は正確にContent-Typeヘッダーを送ることができないのですか?タグはおそらくブラウザーをHTMLと見なすように強制します – Corbin

+0

これはうまくいきます。 〜でファンクションの最後にエコー ""が表示されます。 – zed

+0

なぜupvoteしないのですか? –

0

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

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

動作しません。それはpaintextを返します location.href = '。/ index.php' – zed

+0

@zed、コードを編集しました。 –

0

理由だけではなく、JavaScriptやメタまったくリダイレ​​クトに対処する必要がoutput bufferingを使用していないではありませんか?

<?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(); 
?> 
+0

ありがとうございます。これは完全に正常に動作します。しかし、私は、JavaScriptのリダイレクトだけを望んでいた。 – zed

関連する問題