2013-01-15 57 views
0

我有一個保持頁面,一旦該頁面創建完成後,它將重定向到另一個頁面。顯示頁面,直到條件滿足,然後重定向

目前我的解決方案是每隔5秒刷新持有頁面,每次檢查是否已創建新頁面。問題是頁面閃爍。

有沒有一種方法可以在頁眉中使用簡單的while循環來完成此操作,但仍然顯示保存頁面的html。謝謝。當前代碼如下。

<?php 
ob_start(); 
$id = escapeshellarg($_GET['id']); 
$id = str_replace("'", "", $id); 
$url = 'http://sub.testxxx.com/'. $id . '/index.html'; 
$handle = @fopen($url,'r'); 
if(!$handle) { 
header("Refresh: 5; url=http://testxxx.com/loading.php?id=".$id); 
ob_flush; 
} else { 
sleep(5); 
header("Location: http://sub.testxxx.com/".$id); 
} 
?> 
<html> 
........... 

</html> 
<? 
ob_flush; 
?> 
+0

我會做到這一點,如JavaScript調用,而不是PHP刷新頁面。 – Pitchinnate

回答

1

我會把它分成兩個部分:1)的服務器端腳本(PHP)如果頁面被創建檢查和2)客戶端腳本(JavaScript)的調用通過PHP腳本阿賈克斯每n秒。如果php腳本返回true,則js將客戶端重定向到其新目標。無需重新加載整個頁面 - 也沒有閃爍;)

你需要一些示例代碼?

+0

感謝您的幫助和親切的報價。我追求由SunnyTar建議的代碼,但遇到需要將php變量傳遞到Ajax的問題​​ – crecy

0

checkPage.php:

<?php 
$id = escapeshellarg($_GET['id']); 
$id = str_replace("'", "", $id); 
$url = 'http://sub.testxxx.com/'. $id . '/index.html'; 
$handle = @fopen($url,'r'); 
if(!$handle) { 
return true; 
} else { 
return false; 
} 
?> 

page.php文件:

<html> 
<head></head> 
<body> 
<script type="text/javascript"> 
$.ajax({ 
    url: 'checkPage.php?id=someId', 
    success: function(data) { 
    $(location).attr('href','http://sub.testxxx.com/someId/index.html'); 
    } 
}); 
</script> 
</body> 
</html> 
+0

感謝您的幫助。我擔心我的無知會帶來一​​些問題。 1. checkpage.php是否每5秒檢查一次新頁面的存在? 2.我想使用page.php?id = xxx其中xxx是被捕獲爲$ id - fyi的someId變量。該id被放入數據庫中。有沒有辦法將這個變量傳遞給Ajax,以便checkPage.php?id = $ id? – crecy

+0

保存「$ .ajax ...」之類的功能,並每5秒循環調用一次。您也可以在Page.php開始時檢查您的db爲$ id。 – primetwig

+0

再次感謝您的回覆。我一直在這一天工作!我有checkpage.php工作,但我在ajax代碼中的php變量掙扎。我已經提交了一個新問題,以便顯示編輯的代碼,如果您覺得還有更多可以添加的代碼。非常感謝。 [鏈接](http://stackoverflow.com/questions/14365355/redirect-page-when-new-page-created-using-php-variable-and-ajax) – crecy

相關問題