3

SVNに送信したいデータを含むHTMLフォームがあります。HTML / JSにはこれを行う手段がないので、フォームとSVNの間のリンクとしてPythonを使用したいと思います。私の問題は、HTML / JSからPythonにデータを送信する方法がわからないことです。どちらもクライアント側です(サーバーは関与していません)。

私が想像したのは、ユーザーがフォームに入力してから「送信」ボタンを押すと、Pythonスクリプトが呼び出され、フォームデータが引数として渡されるということです。

私は検索して、人々がPythonサーバー側を実行していて、JavaScriptからPOSTしていることを発見しましたが、サーバーがないため、これは私には不可能だと思います。

両方がクライアント側である場合、HTML / JSからPythonにデータを送信することは可能ですか?


編集:私はPythonとJSの良いバックグラウンドを持っていることを追加する必要があります

4

1 に答える 1

2

Python と JavaScript を組み合わせるいくつかの巧妙な方法を次に示します。

html/js から python にデータを返す

注:サーバーがないと言ったので、JavaScriptで呼び出すリクエストは、Pythonコードが実行されるソケットのリスニングポートを指す必要があります。簡単な方法は、python でポート 80 をリッスンし、JavaScript から :80 を再考せずに通常の呼び出しを行うことです。

基本的に、HTML フォームは、JavaScriptonSubmit()または上記の投稿のコードを呼び出すボタンAJAXを使用してから、Python にデータを読み取らせます (リンクの上部に示されているようにデータをJSON構造化します)。<form>JSON format


以下は、JavaScript を介してフォーム データを使用する方法の簡単な紹介です。

<HTML>
    <HEAD>
        <TITLE>Test Input</TITLE>
        <SCRIPT LANGUAGE="JavaScript">
        function testResults (form) {
            var TestVar = form.inputbox.value;
            alert ("You typed: " + TestVar);
        }
        </SCRIPT>
    </HEAD>
    <BODY>
        <FORM NAME="myform" ACTION="" METHOD="GET">Enter something in the box: <BR>
            <INPUT TYPE="text" NAME="inputbox" VALUE=""><P>
            <INPUT TYPE="button" NAME="button" Value="Click" onClick="testResults(this.form)">
        </FORM>
    </BODY>
</HTML>

この原則を使用して情報を収集
し、上部に記載されているリンクの AJAX 部分を構築します。
それが完了したら、これらの呼び出しをリッスンする Python スクリプト (リンクにも示されています) を開始します。

覚えておいてください: JSONを使用するには、適切にフォーマットしてください。'たとえば、許可されません"


私のリンクでは、これはGETリクエストを「サーバー」(pythonスクリプト)に送信する重要な部分です:

xmlhttp.open("GET","Form-data",true);

これがpythonの部分です:

from socket import *
import json
s = socket()
s.bind(('', 80)) # <-- Since the GET request will be sent to port 80 most likely
s.listen(4)
ns, na = s.accept()

while 1:
    try:
        data = ns.recv(8192) # <-- Get the browser data
    except:
        ns.close()
        s.close()
        break

    ## ---------- NOTE ------------ ##
    ## "data" by default contains a bunch of HTTP headers
    ## You need to get rid of those and parse the HTML data,
    ## the best way is to either just "print data" and see
    ## what it contains, or just try to find a HTTP parser lib (server side)    

    data = json.loads(data)
    print data
于 2013-02-11T18:16:09.140 に答える