| 
<html>
 <head>
 
 <style>
 body{
 height: 100%;
 width: 100%;
 background: lightcyan repeat;
 margin: 0;
 padding: 0;
 }
 #container{
 position: relative;
 width: 100%;
 height: 50%;
 }
 #content{
 position: absolute;
 top: 50%;
 left: 50%;
 transform: translate(-50%, -50%);
 }
 #status{
 position: fixed;
 overflow: auto;
 height: 50%;
 bottom: 0;
 width: 100%;
 border: 1px solid black;
 padding: 0;
 margin: 0;
 }
 </style>
 <script type="text/javascript" src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
 </head>
 
 <body>
 
 <div id="container">
 <div id="content">
 <input id="start-task" type="button" value="Start task" task="1">
 </div>
 </div>
 
 <div id="status">
 
 </div>
 
 </body>
 
 <script>
 
 function logMessage(message){
 if ($("#status").html().length > 1000) {
 $("#status").html(message+"<br/>");
 }else{
 $("#status").append(message+"<br/>");
 }
 
 }
 
 function pollingStatus()
 {
 $.ajax({
 url: '/status-task.php',
 data: { id: id },
 type: 'POST',
 success: function(data){
 if (data.result){
 logMessage("task "+data.id+" "+data.status);
 if (data.status == "done"){
 clearInterval(interval);
 alert("The process is done, you can refresh the win")
 }
 }else{
 logMessage(data.reason);
 }
 },
 error: function(){
 alert("something wrong was happened");
 }
 });
 }
 
 var interval = 0;
 var id = 0;
 
 $(function(){
 logMessage("Welcome to asynchronous server side task demo");
 
 $("#start-task").click(function(e){
 e.preventDefault();
 
 id = $("#start-task").attr("task");
 $.ajax({
 url: '/start-task.php',
 data: {
 id: id,
 _task: "task"
 },
 type: 'POST',
 success: function(data){
 //logMessage(data);
 if (data.result){
 logMessage("task "+data.id+" added to the system, will be executed soon!");
 interval = setInterval(pollingStatus, 1000);
 }else{
 logMessage(data.reason);
 }
 },
 error: function(){
 alert("something wrong was happened");
 }
 });
 
 return false;
 })
 })
 </script>
 
 </html>
 
 |