传递一个字符串,并从html页面运行python脚本

时间:2017-04-03 21:30:32

标签: javascript jquery python html ajax

我已经全神贯注地寻找解决方案,但我只能找到python的一半或javascript的一半,我需要两者。

我有一个python脚本,我在命令行中运行如下:

$ python3 myscript.py inputString

我希望能够让用户在网页上填写一个文本框,点击一个按钮,然后运行python脚本,给出文本框中的字符串。

我被告知要将python作为WGSI服务器运行,其他人已经告诉他们使用ajax,例如:

$.ajax({
    url: "/path/to/my/script.py",
    data: "document.getElementById('textinputID').value,
    success: function(response) {}
});

但老实说我不懂阿贾克斯。特别是"成功"那个电话的一部分。当我运行jQuery时,我得到错误,这可能是有道理的,因为我还没有完成服务器的一半?

我只是非常困惑,如果有人可以在演唱会上解释这两半,我会很高兴。

1 个答案:

答案 0 :(得分:1)

您需要的是在javascript和后端python服务器中创建前端客户端。这是Web开发中非常基本的东西。

我为您创建了应用程序的两个方面。请记住,这是非常基本的。

首先,您将使用名为Flask的python框架。你必须安装它,如下所示:

> pip install flask

之后,创建一个名为server.py

的文件
from flask import Flask, request, render_template
app = Flask(__name__)

@app.route("/script", methods=['POST'])
def script():
    input_string = request.form['data']

    """
    Your script code here
    """

    return "backend response"

@app.route('/')
def static_page():
    return render_template('index.html')

if __name__ == "__main__":
    app.run()

input_string是保存输入字符串的变量。

然后,创建一个名为template的文件夹,并在其中添加一个名为index.html的文件

<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <title>Test</title>
</head>
    <body>
        <input id="textinputID" type="text" name="textinput">
        <script type="text/javascript">
            function sendMessage() {
                $.ajax({
                    method: 'POST',
                    url: "http://localhost:5000/script",
                    data: {'data': document.getElementById('textinputID').value},
                    success: function(response) {
                        console.log(response)
                    },
                    error: function(response) {
                        console.error(response)
                    }
                });
            }
        </script>
        <button onclick="sendMessage()">Send</button>
    </body>
</html>

现在您可以运行python server.py,然后您可以在浏览器中转到http://localhost:5000

root将加载index.html。当您发送文本时,您将使用/script端点。在那里,您可以插入脚本代码。应该以该方法返回响应。

成功错误函数是回调。当服务器发回响应时,将触发这些功能。如果服务器返回HTTP状态2xx,则将调用 success 函数;否则错误

我强烈建议您详细了解ajaxcallbacks。您可以在Flask site too上了解详情。