[英]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.