我有一个HTML表单,它将POST提交到FedEx PHP脚本,需要20-25秒才能完成执行。
我的意图:点击提交按钮后,屏幕立即刷新到新生成的PHP页面,显示消息“提交表单数据。继续执行可能需要30秒”。接下来是一些状态更新消息。完成FedEx PHP脚本后最终会出现“成功”消息。全部按顺序输出作为脚本执行进度。
我的问题:点击提交按钮后,屏幕仍然显示在表单页面上,并且在FedEx PHP脚本执行结束之前屏幕不会刷新。因此,长时间的沉默和用户不知道提交状态。
到目前为止我尝试了什么:ob_flush()flush()。我认为最初这是一个输出缓冲问题。但是当我通过重新发布(右键单击>刷新)执行FedEx PHP脚本时。使用ob_flush()flush()顺序刷新状态消息。只有当我从HTML表单提交提交时,才会在PHP脚本结束时立即输出所有内容。
请帮忙!先感谢您。
Gary Cho
答案 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");
});
}