2012-04-11 17 views
5

Ho una funzione che fa eco a javascript per navigare in una pagina diversa. Mentre si verifica la navigazione, laecho Javascript window.location.href non funziona

echo 'window.location.href="'.$url.'";'; 

non funziona e semplicemente lo stampa sullo schermo.

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

Io uso la mia funzione in questo modo: redirect("./index.php");

La mia funzione php è la seguente

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

Il tuo $ url deve essere adeguatamente sfuggito nel caso in cui contiene una". In ogni caso, è la pagina una pagina html? Il browser potrebbe essere interpretting come testo normale. Inoltre, essendo un po 'pedante, i dettami delle specifiche HTTP quella posizione dovrebbe avere un URI completo che la segue, non un URL relativo – Corbin

+0

La sua pagina php. Il mio progetto mi impone di fornire URL relativi quindi non ho scelta per questo – zed

+0

Una pagina PHP non significa che viene automaticamente interpretata come HTML . – Corbin

risposta

4

tuo browser per trattamento la risposta in testo semplice.

Prepend to you response a Content-Type: text/html\ n plus avvolge il contenuto all'interno di un tag <html></html>.

+0

se headers_sent(). non può esattamente inviare un header Content-Type egli può? I tag sarebbe probabilmente costringere un browser nel vedere come HTML però. – Corbin

+0

Questo funziona. Tutto ho fatto è stato aggiungere un eco "" al inizio della funzione e un'eco "" alla fine della funzione. – zed

+0

quindi perché non upvotare o accettare, allora? –

0

Provare in questo modo.

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

Non funziona. Restituisce paintext location.href = './Index.php' – zed

+0

@zed, modificato il codice. –

0

Perché non usare output buffering e non avere a che fare con JavaScript o meta reindirizza a tutti?

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

Grazie. Funziona perfettamente. Tuttavia speravo solo per il reindirizzamento javascript. – zed