我最近創建了一個Facebook應用程序,它將一些內容發佈到用戶組。如果用戶發佈到多個組,那麼我想顯示一個進度條。它的HTML部分我創建了一個具有文本區域的表單,表單重定向到post.php文件。然後我發佈到該post.php頁面中的用戶組。正如我所說,我使用進度條來顯示進度。但消息首先被髮布,然後只有進度條才起作用。我很確定它的工作進度條。在頁面加載後運行PHP
簡而言之,首先在JS或HTML之前執行PHP部分。所以請幫助我克服這個問題。
這是我在post.php中的文件:
<body style = "background-color: #4ea6e6;">
<center>
<div style = "width: 50%; margin-top: 5%; padding: 50px; background-color: #fff;">
<div class="input-group" style = "height: 30px;">
<progress min = "0" max = "100" value = "50" style = "height: 30px;">
</progress>
<span class="input-group-addon">
0%
</span>
</div>
<br>
<div class = "message">
</div>
<br>
<div class = "alert alert-success success" style = "font-size: 18px; font-family: Muli; visibility: hidden;"><b>Great !</b> Your message was successfully posted !</div>
</div>
</center>
</body> <?php
require_once 'libs/facebook.php';
$config = array(
'appId' => 'My app id',
'secret' => 'my app secret',
'fileUpload' => false, // optional
'allowSignedRequest' => false, // optional, but should be set to false for non-canvas apps
);
$facebook = new Facebook($config);
$groups = $_POST['groups'];
$link = $_POST['link'];
$message = $_POST['message'];
$count = count($groups);
for($i=1; $i<count($groups); $i++){
$api = $facebook->api($groups[$i] . '/feed', 'post', array(
link => $link,
message => $message
));
$api = $facebook->api($groups[$i]);
$name = $api['name'];
$j = ($i/(count($groups)-1))*100;
?>
<script type = "text/javascript">
var timeout = setTimeout(post, 0);
function post(){
$('progress').attr("value" , "<?php echo $j; ?>");
$('.message').html("Posting to <?php echo $name; ?>");
$('.input-group-addon').html("<?php echo $j; ?> %");
if(<?php echo ($i/count($groups)); ?> != 1){
var timeout = setTimeout(post, 0);
}
else{
clearTimeout(timeout);
}
}
</script>
<?php
}
「說得短PHP的一部分被首先JS或HTML之前執行的」 - 當然,這就是客戶端 - 服務器模型的工作原理。 – elclanrs
總是有'sleep()'函數,但在我看來,你的問題更多的是概念問題,也許使用ajax調用並通過JS延遲它們? –
@elclanrs我想知道是否有任何可能的方式使其工作方式相反 – Srivathsan