2010-06-06 76 views
19

我有一個簡單的窗體,它是在IFRAME中。當用戶點擊SUBMIT時,它會重定向到我服務器上的特定頁面。我使用重定向功能是IFRAME中的PHP「頭(位置)」,加載到_top位置?

header ('Location: mypage2.html'); 
exit(); 

但我希望新的頁面中_top位置打開,而不是我用的是同一個IFRAME內。我怎樣才能讓瀏覽器在_top中打開新頁面而不是在IFRAME中? 在此先感謝。

+0

如果您無法訪問FORM元素並且無法訪問PARENT頁面的代碼,您該怎麼辦? – Doug 2015-04-14 00:49:27

回答

26

您無法在PHP中達到預期效果。這是你不得不從JavaScript做或添加target屬性<form>

<form ... target="_top"> 
+0

+1很好的解決方案。但是,如果您想在出現錯誤時將用戶重定向到原始頁面,它將弄亂任何服務器端錯誤檢查。 – jeroen 2010-06-06 18:39:46

+0

感謝這是有史以來最簡單的解決方案:)但是當我不知道它...... :)最好問一下,對:) – Spoonk 2010-06-06 18:51:23

+0

@jeroen我在我的簡單.html頁面中使用javascript進行字段檢查。在空字段的情況下,我不需要重定向。我使用警報:) – Spoonk 2010-06-06 18:53:20

11

您可以使用JavaScript來訪問父。你可以在你的PHP回聲出的JavaScript ..所以你的父頁面有這樣的:

function changeURL(url) { 
    document.location = url; 
} 

,在你的PHP腳本,你回聲

<script> 
    parent.changeURL('mypage2.html'); 
</script> 

你不能叫parent.document的原因。位置是因爲它是隻讀的 - 您必須在父級上有可用的功能才能執行此操作。

+1

這是更好的解決方案。 – 2012-12-19 22:56:47

4

我們可以使用JavaScript這樣的:

target.window.location='locationpage.html'; 
top.window.location='mypage2.html'; 
1

最好的和最簡單的事情做的就是用表格目標元素

<form action="..." target="_top"> 
<form action="..." target="_parent"> 

任一目標參數的正常工作

1

您可以使用<a href="pagename.php?Break=Y">Break Out</a>或使用代碼

<?php header("Location: pagename.php?Break=Y"); ?> 

然後您在頁面的標題使用下面的代碼與

if(isset($_GET['Break'])) // 
    { 
    $BreakFrame = true; 
    $BreakToPage = "pagename.php"; 

    } 

<script language="JavaScript" type="text/javascript"> 
function changeURL(url) { 
    document.location = url; 
} 
</script> 

<?php if($BreakFrame) { ?> 

<script language="JavaScript" type="text/javascript"> 
parent.changeURL('<?=$BreakToPage?>'); 
</script> 

<? }?> 
7

一個簡單的方法,直接在PHP父頁面重定向,而不是在iframe:

echo "<script>top.window.location = '/mynewpage.php'</script>"; 
die; 

die; ISN並不一定必要,但爲了防止腳本繼續進行,例如,如果在用戶的瀏覽器中禁用了javascript,則「很好」以防萬一。