簡體   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