PHP脚本运行前的警告消息

时间:2018-02-05 20:23:27

标签: php jquery shell alert

我有一个简单的小脚本,它合并来自远程服务器的文件。

合并操作是$ _POST操作的一部分。因此,当我发布时,我希望能够警告用户随后的合并操作和响应将需要几秒钟才能完成。当然,在POST之后放置一个js或swal警告消息。

然而,警告消息不会弹出,直到PHP处理全部完成,到那时警告有点无意义。我已经尝试了很多方法(比如JQ隐藏了基于按钮点击显示警告div),但最终我的所有尝试都陷入了同一个陷阱 - PHP想要先运行并且必须遵循消息。

任何人都有任何想法(或者我是不是在调制服务器端事件例程)?

(ps我无法更改下面的脚本。这里的shell命令是先决条件)

                <?php
                if (isset($_POST['options']))//FINAL GENERATE BUTTON
                {

                //JS ALERT OR SWAL OR MODAL MESSAGE---------> "MIGHT TAKE A WHILE THIS"



                if (false!==file($attach_source))//cannot use if file_exists on a remote server poll. Use the $file() function instead
                {   
                    file_put_contents
                        (
                            $attach_dest,//destination path.filename (ON SERVER)
                            file_get_contents($attach_source)//source file 
                        );
                }
                else
                {   
                echo 'STUFF';
                }

                //MERGE...  
                    $fileArray= array($deposit_info,$attach_dest);

                //set up target path/file for merged
                    $outputName = $final_path.$front.$propertyid.".pdf";


                //ghostscript command line--does the merging then puts the 
      merged file into $outputName (off-the-shelf script)
                    $cmd = "gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -
    sOutputFile=$outputName ";
                    foreach($fileArray as $file) 
                        {
                        $cmd .= $file." ";                                                                  
                        }
                        $result = shell_exec($cmd);
           .............    
         }
    ?>

2 个答案:

答案 0 :(得分:2)

这需要你重新考虑一下你的逻辑......

如果你正在使用jQuery,你应该使用jQuery来启动对PHP脚本的调用,而不是让PHP脚本运行并尝试通过JavaScript发出警告,因为 PHP必须在JavaScript之前完成运行输出到浏览器。这是一个例子:

Console

每当调用AJAX请求时,都会自动调用前两个函数。

你需要PHP执行的任何后续工作也应该由AJAX请求调用,因为(如上所述)从PHP输出JS需要PHP在输出JS之前完成,因为PHP没有在输出时与客户端交互(有方法可以做到这一点,但它们会发臭)。

答案 1 :(得分:1)

我认为您需要在Javascript中修复此客户端。使用jQuery ...

$('#my-submit-button').click(function() {
    $('#my-warning-message').show();
    $('#my-form').submit();
});

在提交POST的HTML页面中包含警告消息(在<div id="my-warning-message" style="display:none">内)(而不是在响应HTML中)。单击提交按钮(id="my-submit-button"))后,将执行此JS片段。它将显示警告(您可能希望以不同的方式显示它),并在显示后,将表单数据提交到PHP脚本。用户将看到警告,因为PHP正在服务器端处理表单数据。