从HTML/Flask运行Python函数

从HTML/Flask运行Python函数,python,jquery,html,flask,Python,Jquery,Html,Flask,我一直把头撞在墙上想弄明白这件事。我正在编写一个应用程序,理想情况下,当HTML中发生onclick时,它会从FLASK运行python脚本。问题是我所做的一切似乎都不管用。我不再收到错误,但程序无法运行 我尝试过通过AJAX访问python脚本,我尝试过在HTML中通过jscript调用python脚本,我为python脚本创建了一个单独的文件,而不是通过Flask运行它 </style> <h1>Book Roulette</h1> <h2>D

我一直把头撞在墙上想弄明白这件事。我正在编写一个应用程序,理想情况下,当HTML中发生onclick时,它会从FLASK运行python脚本。问题是我所做的一切似乎都不管用。我不再收到错误,但程序无法运行

我尝试过通过AJAX访问python脚本,我尝试过在HTML中通过jscript调用python脚本,我为python脚本创建了一个单独的文件,而不是通过Flask运行它

</style>
<h1>Book Roulette</h1>
<h2>Discover Something New</h2>
<h3>Click the image to download a surprise book</h3>
<a href="/static/gut.py"> <button class="button" style="background: url(/static/images/stack.jpg)" onclick="button();" action="/button"></a>
</button>
<script>

$(function() {
    $('button').click(function() {
        $.ajax({
            url: 'static/gut.py',
            data: $('form').serialize(),
            type: 'POST',
            success: function(response) {
                console.log(response);
            },
            error: function(error) {
                console.log(error);
            }
        });
    });
});

</script>
</body>
</html>

我想做的是,当我单击HTML按钮在用户计算机上生成新文件时,运行python代码。到目前为止,当我点击按钮时,什么都没有发生。

您实际上想要实现的是创建一个客户机/服务器项目。html是客户端或前端,python是服务器或后端。使两者通信的方法是通过api。然后,您应该提前启动Flask应用程序,不要从前端调用脚本,而是将请求发送到正确的端点。假设您在本地计算机的默认端口上运行Flask,请尝试在前端用以下值替换
url:'static/gut.py'
url:'http://localhost:5000/button“


每当您单击按钮时,这将触发关联的功能。

对于您想要访问的功能,您需要为您的应用程序添加第二台服务器。因为
POST
请求需要由一个已经运行的web应用程序来处理,所以如果没有第二个服务来接收这个
POST
请求,并作为子进程运行Flask应用程序,就不可能实现您的目标。

更新:实际上,我在不使用jquery或PHP的情况下设法解决了这个问题

</script>
<a href="/roulette"><input type="button" name="button" class="button" style="background: url(/static/images/stack.jpg)"></input></a>
</body>
</html>


谢谢你们的帮助。

$(function(){$('button')。单击(function(){$.ajax({url:'',数据:$('form')。序列化(),键入:'POST',成功:函数(响应){console.log(响应);},错误:函数(错误){console.log(error);}}}}};});在打开html页面之前,您是否从终端启动了flask服务器?如果是,终端上的输出是什么?以下是加载页面并单击按钮*Serving flask app“app”(延迟加载)时的完整输出*环境:生产警告:不要在生产环境中使用开发服务器。请改用生产WSGI服务器。*调试模式:on*正在运行(按CTRL+C退出)*使用stat重新启动*调试器处于活动状态!*调试器PIN:284-389-406 127.0.0.1---[10/Aug/2019 12:46:18]“GET/books HTTP/1.1”200-我该怎么做呢?它可以是一个Flask应用程序,它在一个路由内,使用
子流程
模块生成第二个Flask应用程序的流程(请参阅)。在任何情况下,此用例听起来有点倒退,因此我将探索其他方法。我无法提出任何建议,因为我不知道这里的最终目标是什么。您是否查看了浏览器的开发人员工具?您可以按F12打开它们。转到“控制台”选项卡。是否有任何错误消息?
</script>
<a href="/roulette"><input type="button" name="button" class="button" style="background: url(/static/images/stack.jpg)"></input></a>
</body>
</html>