2012-04-11 117 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

你的$網址應該在情況下,它包含了」,反正是頁面的html頁面?瀏覽器可能會訓釋它以純文本格式正確轉義。此外,作爲一個有點迂腐,HTTP規範使然 – Corbin 2012-04-11 18:52:32

+0

這是一個php頁面,我的項目需要我給出相對URL,因此我沒有選擇這個 – zed 2012-04-11 19:12:22

+0

一個PHP頁面並不意味着它會被自動解釋爲HTML – Corbin 2012-04-11 19:13:22

回答

4

你的瀏覽器將響應明文。

預先給您迴應Content-Type: text/html\ n加上您的內容包裹在<html></html>標記內。

+0

如果headers_sent()。他不能準確地發送一個Content-Type頭可以嗎?標籤可能會強制瀏覽器看到它作爲HTML雖然。 – Corbin 2012-04-11 19:13:54

+0

這工作。我所做的只是添加回聲「」在...處函數的開始處和函數結尾處的回聲「」。 – zed 2012-04-11 19:19:36

+0

那麼爲什麼不能upvote或接受呢? – 2012-04-11 19:25:20

0

試試這個方法。

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

不起作用。它返回paintext location.href ='。/ index.php' – zed 2012-04-11 19:13:59

+0

@zed,編輯了代碼。 – 2013-01-16 18:54:43

0

爲什麼不直接使用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(); 
?> 
+0

謝謝。這工作非常好。不過,我只希望只有JavaScript重定向。 – zed 2012-04-11 19:18:33