繁体   English   中英

从Javascript调用Python脚本

[英]Call Python Script from Javascript

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

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

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

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

编辑

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

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

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

如何使用Javascript调用此python文件?

据我了解您的问题,您要执行的操作称为“远程过程调用”,或某种面向服务的体系结构(SOA)。

向服务器发出POST请求时,您处在正确的轨道上。

您可以设置诸如flask或cherrypy之类的中间件来在发送GET,PUT,POST ...请求时运行脚本。 在中间件控制器内部,您可以调用脚本。

基本上,您已经开始创建RESTful api,这是如今在后端运行逻辑的一种非常标准的方法。

进行网址路由的不同框架的一些示例:

蟒蛇:

NodeJ:

这个问题也很好: JSON,REST,SOAP,WSDL和SOA:它们如何链接在一起

您可以通过浏览器执行此操作的另一种方式是使用套接字,该套接字将打开客户端与服务器之间的连接。

在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代码中,您可以将Socketio客户端用于python( 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)

似乎还有一个专门用于烧瓶的版本: https : //flask-socketio.readthedocs.org/en/latest/

或者,您也可以使用翻译器将python转换为javascript,从而直接在浏览器中运行python:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM