Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在后台运行python代码时显示在php中提交的表单_Javascript_Php_Python_Html - Fatal编程技术网

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

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 我已经在这个网站上搜索过了,没有找到任何有用的帖子。 请仅在有助于解决此问题时发

我正在一个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>