gpt4 book ai didi

javascript - 从 Javascript 调用 Python 脚本

转载 作者:行者123 更新时间:2023-12-02 15:22:00 24 4
gpt4 key购买 nike

我在 dreamhost 服务器上,有一些 HTML 在按下按钮时调用一些 javascript。我试图在点击此按钮时调用 python 脚本。

首先,据我所知,由于我位于共享主机上,因此我无法使用 AJAX,因为它不受支持,因此我需要在没有 AJAX 的情况下执行此操作。现在我正在尝试执行一个正在运行的 XMLHttpRequest

我还意识到执行 XMLHttpRequest 并不是最好的方法,因为文件都在服务器上,必须有一种方法可以直接调用文件?

因此,如果有人打电话告诉我如何直接调用它或帮助我在浏览器控制台中修复此错误,那就太好了。感谢您的帮助

编辑

我有一个 HTML 文件,当用户点击该文件上的按钮时,它会调用 HTML 文件中的一些 javascript。此 JavaScript 当前向位于同一服务器和 HTML 文件上的 Python 脚本发出 POST 请求。

我想要的不是向服务器上的 python 文件发出 post 请求,而是当在 HTML 文件中单击按钮时,直接从运行的 javascript 调用 python 文件。

包含 javascript 的 HTML 文件和 python 文件都位于同一服务器上。而且我不希望 python 在浏览器中运行,我希望它在服务器的后台运行。

如何使用Javascript调用这个python文件?

最佳答案

据我了解您的问题,您想要做的事情称为“远程过程调用”,或某种面向服务的架构(SOA)。

您向服务器发出 POST 请求的方向是正确的。

您可以设置像 Flask 或 Cherrypy 这样的中间件,以便在发送 GET、PUT、POST ... 请求时运行脚本。在中间件 Controller 内部,您可以调用脚本。

基本上,您已经开始创建 RESTful api,这是当今在后端运行逻辑的相当标准的方式。

用于执行 url 路由的不同框架的一些示例:

Python:

NodeJs:

这个问题也很好:JSON, REST, SOAP, WSDL, and SOA: How do they all link together

从浏览器执行此操作的另一种方法是使用套接字,它会在客户端和服务器之间打开连接。

在 javscript 中你可以使用 socketio:

<script src='/socket.io/socket.io.js'></script>
<script>
var socket = io();
socket.connect('http://localhost:8000')
socket.emit('run_a_script_event', {arg1: 'hello', arg2: 'world'});
</script>

在你的Python代码中,你可以使用Python的socketio客户端(https://pypi.python.org/pypi/socketIO-client):

from your_module import thescript
from socketIO_client import SocketIO, LoggingNamespace

def run_a_script(*args):
print('arg1 and arg2', args)
thescript()

socketIO = SocketIO('localhost', 8000, LoggingNamespace)
socketIO.on('run_a_script_event', run_a_script)

貌似还有专门针对flask的版本:https://flask-socketio.readthedocs.org/en/latest/

或者您可以直接在浏览器中运行 python,方法是使用转译器将其转换为 javascript:

或者您可以使用节点 javascript 生成一个运行 python 脚本的子进程:

或者您可以将 python 脚本导入到节点中,例如:

关于javascript - 从 Javascript 调用 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33968343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com