在页面加载后运行PHP

Run PHP After Page Loads up

本文关键字:运行 PHP 加载      更新时间:2023-09-26

我最近创建了一个facebook应用程序,可以向用户组发布一些内容。如果用户发布到多个组,那么我想显示一个进度条。它的HTML部分,我创建了一个表单,有一个文本区域和表单重定向到一个post.php文件。然后在post。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
            }

你不能在html和js加载后执行同步PHP。

但是你可以对PHP脚本执行XHR调用,这样一旦js加载,AJAX调用就会开始,PHP脚本就会在后台执行

这里是如何使用AJAX与jQuery

您可以在页面加载后执行单独的PHP文件,不使用JS,就像这样。

注意"background image"实际上是一个PHP文件。当PHP文件在body的底部,在html文件和上面所有元素之后被调用时,它将执行。

你可以通过CSS属性中的GET向PHP文件发送数据…

<!DOCTYPE html>
<html>
<head>
<title></title>
<style>
#runPHP
{ 
  background-image:url(script.php);
  display:none;
}
</style>
</head>
<body>
<div id="runPHP"></div>
</body>
</html>