2012-04-11 9 views
5

काम नहीं कर रहा है मेरे पास एक ऐसा फ़ंक्शन है जो किसी भिन्न पृष्ठ पर नेविगेट करने के लिए जावास्क्रिप्ट को आकर्षित करता है। जबकि नेविगेशन होता है,गूंज जावास्क्रिप्ट window.location.href

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

काम नहीं करता है और बस स्क्रीन पर प्रिंट करता है। 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 पृष्ठ है? ब्राउज़र सादा पाठ के रूप में यह interpretting हो सकता है में भाग निकले किया जाना चाहिए। इसके अलावा, एक सा पंडिताऊ जा रहा है, HTTP विनिर्देशन बातें उस स्थान के बाद एक पूर्ण यूआरआई होना चाहिए, न कि एक सापेक्ष यूआरएल। – Corbin

+0

इसका एक php पेज है। मेरे प्रोजेक्ट के लिए मुझे रिश्तेदार यूआरएल देने की आवश्यकता है इसलिए मेरे पास इसके लिए कोई विकल्प नहीं है। – zed

+0

एक PHP पृष्ठ का यह मतलब नहीं है कि यह स्वचालित रूप से HTML के रूप में व्याख्या किया गया है – Corbin

उत्तर

4

आपका ब्राउज़र प्लेन टेक्स्ट के रूप में प्रतिक्रिया व्यवहार करता है:

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

मैं अपने समारोह इस तरह का उपयोग करें।

आपको Content-Type: text/html\ एन प्रतिक्रिया देने के लिए तैयार करें और अपनी सामग्री को <html></html> टैग के अंदर लपेटें।

+0

यदि headers_sent()। वह वास्तव में कोई सामग्री-प्रकार शीर्षलेख नहीं भेज सकता है? टैग शायद ब्राउज़र को इसे एचटीएमएल के रूप में देखने में मजबूर करेंगे। – Corbin

+0

यह काम करता है। मैंने जो कुछ किया वह एक गूंज "" पर फ़ंक्शन के अंत में फ़ंक्शन की शुरुआत और एक गूंज ""। – zed

+0

तो फिर क्यों ऊपर या स्वीकार नहीं करते? –

0

इस तरह से प्रयास करें।

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

काम नहीं करता है। यह दर्द पाठ स्थान.href = '।/Index.php' – zed

+0

@zed, कोड संपादित किया गया है। –

0

क्यों न सिर्फ output buffering का उपयोग करें और जावास्क्रिप्ट के साथ सौदा करने की ज़रूरत नहीं या मेटा बिल्कुल पुनर्निर्देश?

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

संबंधित मुद्दे