2012-04-11 17 views
5

Farklı bir sayfaya gitmek için javascript ekleyen bir işlev var. Navigasyon gerçekleşirken, çalışmıyor ve sadece ekranda yazdırıyor.echo Javascript window.location.href çalışmıyor

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

. Ayrıca, biraz bilgiçlik HTTP şartname dikte Konum, ilgili bir URL değil, tam bir URI'ye sahip olmalıdır. – Corbin

+0

Bir php sayfası. Projem göreli URL vermemizi gerektiriyor, dolayısıyla bunun için bir seçeneğim yok. – zed

+0

Bir PHP sayfası, HTML olarak otomatik olarak yorumlandığı anlamına gelmez – Corbin

cevap

4

Tarayıcınız düz metin olarak yanıt değerlendirir şöyle redirect("./index.php");

Benim php fonksiyonudur:

"window.location.href="./index.php"; 

benim fonksiyonunu bu şekilde kullanın.

Size bir Content-Type: text/html\ n cevabını eklemeniz ve içeriğinizi bir <html></html> etiketi içine sarın.

+0

Eğer headers_sent() Eğer o tam olarak bir Content-Type üstbilgi gönderemezsiniz? etiketleri büyük olasılıkla tarayıcıyı HTML olarak görmesini engeller. – Corbin

+0

Bu, tüm yaptığım "" at Fonksiyonun başlangıcı ve fonksiyonun sonunda eko "". – zed

+0

neden bu yüzden kabul etmiyor ya da kabul etmiyor? –

0

Bu şekilde deneyin.

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

Çalışmıyor. location.href = './Index.php' – zed

+0

@zed paintext değerini döndürür, Kodu düzenledi. –

0

Neden sadece output buffering kullanmak ve JavaScript ile uğraşmak zorunda veya meta hiç yönlendirir değil?

Kişisel $ url düzgün durumda bir". Neyse, bir html sayfası sayfası? Tarayıcı düz metin olarak yorumluyorum olabileceğini içeren kaçan edilmelidir
<?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

Teşekkürler. Bu mükemmel çalışıyor. Ancak sadece javascript yönlendirmeyi umuyordum. – zed