2012-04-11 20 views
5

Mam funkcję, która odtwarza javascript, aby przejść do innej strony. Podczas nawigacji nie działa i po prostu drukuje na ekranie.echo Javascript window.location.href nie działa

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

używam mojej funkcji w ten sposób: redirect("./index.php");

Moja funkcja php jest następujący

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

Twój $ url powinny być właściwie uciekli w przypadku zawiera on”. W każdym razie, to strona strona html? Przeglądarka może być interpretting go jako zwykły tekst. Dodatkowo, będąc nieco pedantyczny, nakazy specyfikacji HTTP Ta lokalizacja powinna mieć pełny identyfikator URI, a nie względny adres URL: – Corbin

+0

Jest to strona php. Mój projekt wymaga podania względnego adresu URL, dlatego nie mam do tego wyboru – zed

+0

Strona PHP nie oznacza, że ​​jest automatycznie interpretowana jako HTML – Corbin

Odpowiedz

4

Twoja przeglądarka traktuje odpowiedź w postaci zwykłego tekstu.

Przygotuj się na odpowiedź Content-Type: text/html\ n plus zawiń treść wewnątrz znacznika <html></html>.

+0

Jeśli headers_sent(). Nie może dokładnie wysłać nagłówka Content-Type może on? Znaczniki prawdopodobnie zmusiłyby przeglądarkę do oglądania jej jako HTML. – Corbin

+0

To działa. Wszystko co zrobiłem to dodać echo "" na początek funkcji i echo "" na końcu funkcji. – zed

+0

, dlaczego więc nie wziąć udziału w konkursie lub nie zaakceptować go? –

0

Spróbuj w ten sposób.

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

Nie działa. Zwraca paintext location.href = './Index.php' – zed

+0

@zed, Edytował kod. –

0

Dlaczego nie wystarczy użyć output buffering i nie mają do czynienia z JavaScript lub przekierowania meta w ogóle?

<?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

Dzięki. Działa to doskonale. Jednak miałem nadzieję tylko przekierowania javascript. – zed

Powiązane problemy