这是一个使用jquery / ajax来调用php的html页面,它调用c程序来更新页面而无需刷新。
我有一个来自用户输入名为 input_form 的数据:
<form id="input_form" name="input_form">
... code ...
</form>
接下来,我有一个Jquery函数,在单击表单按钮时将数据输出到文本框:
//send all of the form data to php and print php's response
$(document).ready(function(){
//the current request
var request;
//what happens the form submit button is clicked
$("#input_form").submit(function(event){
//if a request is currently going on, abort this new request
if (request) {request.abort();}
var serializedData = $(this).serialize();
//disable inputs while the request is going on
var $inputs = $(this).find("input, select, button, textarea");
$inputs.prop("disabled", true);
//perform the request and send the output to a div
request = $.ajax({
type: "get",
url: "ajax.php",
data: serializedData,
success: function(result){
$('#answer').val(result);
}
});
//re-enable all of the inputs now that the request is over
request.always(function () {$inputs.prop("disabled", false);});
//prevent default posting on the form
return event.preventDefault();
});
});
在php端,我接收所有表单数据,并将它们传递给c程序,等待输出,然后回显它:
<?php
$program_statement = './main';
$program_statement .= ' --amount=' . escapeshellarg($_GET['amount']);
$program_statement .= ' --max=' . escapeshellarg($_GET['max']);
$program_statement .= ' --min=' . escapeshellarg($_GET['min']);
$output=shell_exec($program_statement);
echo $output;
?>
问题: 该程序可能需要很长时间才能运行。有没有办法让输出显示在页面上,因为它被输出到shell?函数shell_exec别无选择,只能等待。如何通常完成我想要的同步更新?我做过你认为只是错误做法的事情,还是反对最佳做法?
这是link to the project 这是目前正在运行的link to the server。