如何在后台运行python代码时显示php中提交的表单

2024-09-29 18:42:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个web服务器上工作,用户以html形式提交一些信息/输入。单击submit按钮,后台php代码将启动一个python代码进行分析。Python代码需要很长时间。下面的代码在python代码完成时显示“formsubmitted”消息。我不希望用户等到python代码完成。我想在单击submit按钮时向用户显示“formsubmitted”消息,python代码将继续在服务器中运行。 html格式

<form name="input" action='input.php'  method="post">
<input type="text" name="num1" id="num1" size="4">
<input type="text" name="num2" id="num2" size="4">
<input type="submit" name = "submit" value="Submit" class="submit"/>
</form>

菲律宾比索

echo ("Form submitted");
$num1=$_POST["num1"];
$num2=$_POST["num2"];
$makeinfo= shell_exec('python mypycode.py');

我已经在这个网站上搜索过了,没有找到任何有用的帖子。 只有在有助于解决这个问题的情况下,请发表评论/回复/投票


Tags: 代码用户nameform服务器消息inputhtml
1条回答
网友
1楼 · 发布于 2024-09-29 18:42:33

为了说明注释,发送了一个非常简单的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请求的用法。表单ACTION属性在ajax调用中使用-由于我没有名为input.php的文件,所以我将请求显示到了同一个页面。实际的input.php将不会有sleep函数调用-也许这对您更有用。。。这真的是非常基本的~适应这个你的网页和形式

<!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>

相关问题 更多 >

    热门问题