2013-02-25 58 views
0

我試圖使登錄窗體在iframe中打開。如果用戶單擊提交按鈕時登錄成功,我希望iframe關閉並將瀏覽器重定向到index.php。 問題是,我不知道如何從這一點關閉iframe。如何在成功登錄時在父級關閉iframe?

下面是相關的iframe的代碼,我有:

login.tmpl(HTML文件,其中的形式)

<div class="form_item submit_button"> 
    <button type="submit" name="submit">Login</button> 
</div> 

login.php中(其中i重定向到指數這是哪裏我想我需要一些額外的代碼以關閉IFRAME)

if (!$error) { 
     throw new RedirectBrowserException('index.php'); 
    } 

gallery.tmpl(其中的iframe被調用。不應該是很重要的,我認爲)

<a class="fancybox iframe fancybox.iframe" href="login.php">Iframe Login</a> 

編輯。這裏是我的jQuery代碼(gallery.tmpl):

 $(document).ready(function() { 
      $(".fancybox").fancybox({ 
      padding : 0, 
      prevEffect : 'none', 
      nextEffect : 'none', 
      helpers : { 
       title : { 
        type: 'over' 
       }, 
       thumbs : { 
        width : 50, 
        height : 50 
       } 
      } 
      }); 
     }); 
     $(document).ready(function() { 
      $("a.iframe").fancybox({ 
      autoDimensions : false, 
      autoSize : false, 
      padding : 0, 
      width : 395, 
      height : 195, 
      type : 'iframe' 
      }); 
     }); 

回答

0

你可以相當重定向到的index.php從頁面打開的fancybox(gallery.tmpl)。只需在您的fancybox自定義腳本添加的回調:

$(".fancybox").fancybox({ 
    afterClose : function(){ 
     // redirects to another file after closing 
     window.location.href = "index.php"; 
    } 
}); 

然後,裏面loging.php你可以做到這一點,收於成功的fancybox:

<?php if (!$error) { ?> 
    <script>parent.jQuery.fancybox.close();</script> 
<?php }; ?> 
+0

謝謝。第二部分工程關閉fancybox,但第一部分廢棄我的iframe並在主窗口中打開登錄頁面。我無法找到關於這個afterClose的東西的任何信息...我也嘗試在login.php重定向後關閉iframe,在這種情況下,它重定向iframe首先索引,然後關閉它。 – Chemist 2013-03-06 00:08:49

0

就解決了這個問題。最後,這使它的工作:

if (!$error) { ?> 
    <script type="text/javascript"> 
    parent.$.fancybox.close(); //can use jQuery instead of $ 
    window.parent.location ='index.php';  
    </script> <?php 
    } 

因此,重定向的父母是我所缺失的,直到我想通了。我嘗試着使用某種延遲,但沒有奏效。