Javascript 如何在后台运行python代码时显示在php中提交的表单
我正在一个web服务器上工作,在这个服务器上,用户以html格式提交一些信息/输入。单击submit按钮,后台php代码将启动python代码进行分析。Python代码需要很长时间。下面的代码在python代码完成时显示“FormSubmitted”消息。我不希望用户等待python代码完成。我想在单击submit按钮时向用户显示“form submitted”消息,python代码将继续在服务器中运行。 html 我已经在这个网站上搜索过了,没有找到任何有用的帖子。Javascript 如何在后台运行python代码时显示在php中提交的表单,javascript,php,python,html,Javascript,Php,Python,Html,我正在一个web服务器上工作,在这个服务器上,用户以html格式提交一些信息/输入。单击submit按钮,后台php代码将启动python代码进行分析。Python代码需要很长时间。下面的代码在python代码完成时显示“FormSubmitted”消息。我不希望用户等待python代码完成。我想在单击submit按钮时向用户显示“form submitted”消息,python代码将继续在服务器中运行。 html 我已经在这个网站上搜索过了,没有找到任何有用的帖子。 请仅在有助于解决此问题时发
请仅在有助于解决此问题时发表评论/回复/投票 为了说明注释,发送了一个非常简单的ajax请求,在本例中是发送到同一页面,但将发送到input.php,这需要一段时间来处理数据,因此发送了sleep~请求,但没有使用回调或等待响应-查看控制台的网络选项卡
<?php
if( $_SERVER['REQUEST_METHOD']=='POST' ){
/* to emulate input.php processing request using python */
ob_clean();
sleep(20);
exit( json_encode( $_POST ) );
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<title>ajax - send and forget</title>
</head>
<body>
<form name='input' action='<?php echo $_SERVER['REQUEST_URI'];?>'>
<input type='text' name='num1' size='4'>
<input type='text' name='num2' size='4'>
<input type='submit' value='Submit' class='submit' />
<div id='msg'></div>
</form>
<script>
const ajax=function( url, query ){
let xhr=new XMLHttpRequest();
xhr.open( 'POST', url, true );
xhr.send( query );
}
document.querySelector('input[type="submit"]').addEventListener('click',e=>{
e.preventDefault();
ajax( e.target.parentNode.action, new FormData( e.target.parentNode ) );
document.getElementById('msg').innerText='Request sent... Game Over';
});
</script>
</body>
</html>
发送ajax请求,但如果用户不需要知道结果,或者您的页面不再需要使用request@RamRaider我也这么认为。你能展示示例代码吗?嗨RamRaider,谢谢你的回答,但我不明白。它没有调用“input.php”,因此没有执行python代码。此外,似乎为完成python代码提供了睡眠时间。但是python代码所花费的时间各不相同。这一时间取决于用户的输入。
echo ("Form submitted");
$num1=$_POST["num1"];
$num2=$_POST["num2"];
$makeinfo= shell_exec('python mypycode.py');
<?php
if( $_SERVER['REQUEST_METHOD']=='POST' ){
/* to emulate input.php processing request using python */
ob_clean();
sleep(20);
exit( json_encode( $_POST ) );
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<title>ajax - send and forget</title>
</head>
<body>
<form name='input' action='<?php echo $_SERVER['REQUEST_URI'];?>'>
<input type='text' name='num1' size='4'>
<input type='text' name='num2' size='4'>
<input type='submit' value='Submit' class='submit' />
<div id='msg'></div>
</form>
<script>
const ajax=function( url, query ){
let xhr=new XMLHttpRequest();
xhr.open( 'POST', url, true );
xhr.send( query );
}
document.querySelector('input[type="submit"]').addEventListener('click',e=>{
e.preventDefault();
ajax( e.target.parentNode.action, new FormData( e.target.parentNode ) );
document.getElementById('msg').innerText='Request sent... Game Over';
});
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<title>ajax - send and forget</title>
</head>
<body>
<form name='input' action='input.php'>
<input type='text' name='num1' size='4'>
<input type='text' name='num2' size='4'>
<input type='submit' value='Submit' class='submit' />
<div id='msg'></div>
</form>
<script>
const ajax=function( url, query ){
let xhr=new XMLHttpRequest();
xhr.open( 'POST', url, true );
xhr.send( query );
}
document.querySelector('input[type="submit"]').addEventListener('click',e=>{
e.preventDefault();
ajax( e.target.parentNode.action, new FormData( e.target.parentNode ) );
document.getElementById('msg').innerText='Request sent... Game Over';
});
</script>
</body>
</html>