2012-04-11 2 views
5

나는 자바 스크립트를 에코하여 다른 페이지로 이동하는 기능이 있습니다. 탐색이 발생하는 동안에코 자바 스크립트 window.location.href 작동하지 않습니다

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

은 작동하지 않고 단순히 화면에 표시됩니다.

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

. 또한, 약간 현학적 인, HTTP 사양의 지시 해당 URL은 상대 URL이 아닌 완전한 URI를 가져야합니다. – Corbin

+0

PHP 페이지입니다. 프로젝트에서 상대 URL을 제공해야하므로 선택할 수 없습니다. – zed

+0

PHP 페이지가 자동으로 HTML로 해석된다는 것을 의미하지 않습니다. . – Corbin

답변

4

이 브라우저가 일반 텍스트로 응답을 처리하는 다음과 같이 redirect("./index.php");

내 PHP 함수는 다음과 같습니다

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

나는 나의 기능이 방법을 사용합니다.

앞에 붙은 대답 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

왜 그냥 output buffering 사용하고 자바 스크립트 처리해야 또는 메타 전혀 리디렉션하지?

귀하의 $ URL이 제대로 경우 그것은이 ". 어쨌든, HTML 페이지 페이지입니다? 브라우저가 일반 텍스트로 interpretting 수 있습니다 포함에서 탈출해야
<?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

감사합니다. 이것은 완벽하게 작동합니다. 그러나 나는 자바 스크립트 리디렉션 만 기대했다. – zed

관련 문제