Недавно я создал приложение facebook, которое отправляет некоторый контент в группу пользователей. Если пользователь отправляет несколько групп, я хотел бы отобразить индикатор выполнения. Часть HTML из него Я создал форму, которая получила текстовую область, и форма перенаправляется в файл post.php. И отправляю в группы пользователей на этой странице post.php. Как я уже сказал, я использую индикатор прогресса, чтобы показать прогресс. Но сообщение сначала публикуется, и только тогда работает индикатор выполнения. Я уверен, что он работает.Запуск PHP после загрузки страницы
Короче говоря, часть PHP выполняется сначала перед JS или HTML. Поэтому, пожалуйста, помогите мне в преодолении этой проблемы.
Это то, что у меня есть в файле 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