2017-07-30 37 views
0

我想知道如果有人可以帮我解决我遇到的这个问题。我想创建一个加载页面,当PHP文件运行一个脚本时,这个页面会出现给用户。下面是我写的文件和我正在尝试做的解释。HTML加载页面,而php处理信息从表格

1)Index.html:这是用户看到的初始页面。他们将输入他们的名字和姓氏,然后点击提交按钮。一旦他们点击提交按钮,PHP脚本就会运行。

<!DOCTYPE html> 
<html> 
    <head> 
    </head> 
    <body> 
     <div> 
      <form action="saveFile.php?saving=1" id="contact_form" method="post"> 
       First Name: 
       <input type="text" name="fname" id="fname" value="First Name" onblur="if(this.value == '') { this.value = 'First Name'; }" onfocus="if(this.value == 'First Name') { this.value = ''; }" /> 
       <br> 
       Last Name: 
       <input type="text" name="lname" id="lname" value="Last Name" onblur="if(this.value == '') { this.value = 'Last Name'; }" onfocus="if(this.value == 'Last Name') { this.value = ''; }" /> 
       <br> 
       <br> 
       <input value="Submit" type="submit" /> 
      </form> 
     </div> 
    </body> 
</html> 

2)saveFile.php:这个PHP文件的用户输入保存到一个文本文件,然后运行一个bash脚本,它的文本文件,并做一些随机的东西吧。脚本完成后,它将返回一个HTML文件,它将自动重定向到。

现在,我有这个问题:我把这个GIF让人们知道脚本正在运行,下一个页面很快就会出现。当我尝试这个时,第二页不显示,直接进入第3页。脚本和一切运行良好,它没有任何问题。实际发生的情况是,当用户点击提交按钮时,它显示页面正在加载内容,准备就绪后跳转到第3页。 GIF完全不显示,页面只是从index.html跳转到第3页。我试图制作文件.html或.php,但它给了我相同的结果。如果任何人都可以给我一些关于如何让这个工作的技巧,那将非常感激。

<!DOCTYPE html> 
<html> 
    <head> 
    </head> 
    <body> 

    <img src="loading.gif"> 

    <?php 
     $fname = $_POST["fname"]; 
     $lname = $_POST["lname"]; 

     $text = $fname . PHP_EOL . $lname; 

     $file = "Contact.txt"; 
     $fp = fopen($file, "a") or die("Couldn't open $file for writing!"); 
     fwrite($fp, $text) or die("Couldn't write values to file!"); 
     fclose($file); 

     $output = shell_exec("bash Script.sh"); 

     header("location:$output"); 
    ?> 

    </body> 
</html> 

3)$ output:这是用户获取一些随机信息的最后一页。

<!DOCTYPE html> 
<html> 
    <head> 
    </head> 

    <body> 

     <div> 
     <p> Random information </p> 
     <a href="index.html" class=home> Click here to go back </a> 
     </div> 
    </body> 
</html> 
+0

我想你的php脚本运行很快,所以你没有显示gif图像 –

+0

你可以使用 <?php $ fname = $ _POST [“fname”]; sleep(10); .......... 显示gif图像 –

+0

您可能希望使用Ajax和formdata(https://stackoverflow.com/questions/32421527/formdata-object-not-working-with- jquery-ajax-post)来做到这一点。 – Rasclatt

回答

0

你在重定向用户saveFile.php,所以它不会显示GIF图像。

首先,分配一个ID提交按钮:

<input value="Submit" type="submit" id="submitForm"/> 

2.移动<image src="loading.gif" />的index.html页,分配一个ID给它&设置其显示使用CSS,以便loading.gif将默认隐藏。

<img src="loading.gif" id="loader" style="display: none"/> 

3.saveFile.php删除header("location:$output");

4.添加follwing jQuery的:

$(document).ready(function(){ 
    $("#submiForm").click(function(){ 
     $("#loader").show(); //show loading.gif 
     setTimeout(function(){ 
      window.location = "your page name where you want to redirect"; 
     }); 
    }, 5000); //Redirect after 5 seconds.. 
}); 

注:不要使用PHP sleep函数用于此目的。

+0

这对你有帮助吗? –