在HTML表单提交后立即显示PHP输出

时间:2014-08-14 09:10:18

标签: php forms

我有一个HTML表单,它将POST提交到FedEx PHP脚本,需要20-25秒才能完成执行。

我的意图:点击提交按钮后,屏幕立即刷新到新生成的PHP页面,显示消息“提交表单数据。继续执行可能需要30秒”。接下来是一些状态更新消息。完成FedEx PHP脚本后最终会出现“成功”消息。全部按顺序输出作为脚本执行进度。

我的问题:点击提交按钮后,屏幕仍然显示在表单页面上,并且在FedEx PHP脚本执行结束之前屏幕不会刷新。因此,长时间的沉默和用户不知道提交状态。

到目前为止我尝试了什么:ob_flush()flush()。我认为最初这是一个输出缓冲问题。但是当我通过重新发布(右键单击>刷新)执行FedEx PHP脚本时。使用ob_flush()flush()顺序刷新状态消息。只有当我从HTML表单提交提交时,才会在PHP脚本结束时立即输出所有内容。

请帮忙!先感谢您。

Gary Cho

3 个答案:

答案 0 :(得分:1)

正如Marc Anton Dahmen所说,你应该显示一个确认提交的基本页面。在此页面上,向FedEx脚本发出AJAX请求。当脚本为您提供结果时,使用javascript将其显示在页面上。

答案 1 :(得分:1)

<强> JS

$('#loading-indicator').show();  // show the loading message

$.ajax({  
      type: "POST",  
      url: "fedex.php",  
      data: dataString,  
      success: function(html) {

       console.log(html); //to see what's returned

       //use the data to generate content you want  
       alert ("Done!")

       $(".content-from-fedex").html(html); // insert the response into div

       $('#loading-indicator').hide(); // hide the loading message

      }
}); 

<强> HTML

<div class="content-from-fedex" id="data"></div>

<div id="loading-indicator">
    <img src="http://dummyimage.com/200x200/000/fff.gif&text=LOADING" 
         class="ajax-spinner"/>
</div>

答案 2 :(得分:0)

这是一个函数的例子:

function SUMBIT(){
alert('operation started it might take 30 seconds');
$.post('urltothepage.php'{
//here you send the POST Variables
name : $('#txtname').val(),
lastname : $('#txtlastname').val()
.
.
.
.
//just an exmaple and do this for every field you are sending its value to page
,
function(data){
//data contains the response from the page 
alert("success");
});
}