使用している Web フレームワークの種類については言及していませんが (存在する場合)、URL の名前から、サーバー上の Python スクリプトを直接呼び出そうとしていると推測できます。
これが機能する唯一の方法は、スクリプトがCGI スクリプトmonStat.py
として構成され、それに応じて (CGI スクリプトが実行されるように) サーバーでホストされている場合です。あなたの JavaScript は、このスクリプトに対して POST リクエストを行うことを意味しているため、Python スクリプトは POST リクエストを受け入れてから、パラメーターを読み取ってそれらに基づいて処理する必要があります。javascript で callable に文字列として名前を付けて、CGI スクリプトに何を実行するかを自動的に認識させることはできません。これは、高度な URL 処理を提供する Web フレームワークの場所です。
URL を介して通常の python スクリプトを呼び出すだけでは、うまくいきません。最も基本的な原始的なアプローチは、python CGI モジュールを使用することです。これは学習と開始には適していますが、非常に非効率的で時代遅れのアプローチです。おそらく Web フレームワークを調べる必要があります: Python WebFrameworks
アップデート
あなたが述べたように、実際にはCGIスクリプトを使用しています...
「ルーティング」は、Webフレームワークを使用するときに無料で取得できるものです。着信要求をメイン ループに取り込み、どこで処理するかを決定します。CGIのみを使用する場合は、これを自分で行う必要があります。CGI スクリプトにリクエストを行うたびに、通常のスクリプトと同じように、通常のエントリポイントで実行されます。
そのエントリポイントで、リクエストを読み取る必要があります。リクエストが POST で「is_running」を含む場合、そのリクエストをis_running()
ハンドラーに転送できます。「関数名」は単なる文字列データです。リクエストを読み取って何をすべきかを判断するのは、コード次第です。
これは、いくつかの受け入れ可能なハンドラーを許可する関数にマップする、それがどのように見えるかの非常に大まかな例です:
#!/usr/bin/env python
import cgi
import cgitb
cgitb.enable()
def isRunning(form):
print "Content-Type: text/html\n"
print "isRunning()"
print form.getvalue('name')
def _error(*args):
print "Content-Type: text/html\n"
print "Error"
HANDLERS = {
'isRunning': isRunning
}
def main():
form = cgi.FieldStorage()
h_name = form.getvalue('callFunc')
handler = HANDLERS.get(h_name, _error)
handler(form)
if __name__ == "__main__":
main()