flask可以与jquery post一起使用吗?

flask可以与jquery post一起使用吗?,jquery,python,json,flask,Jquery,Python,Json,Flask,我对Flask非常陌生,在继续之前,是否可以使用Flask和json执行从jquery到python函数的“post”?我也不熟悉json,因此所有这些代码对我来说都非常复杂 用于: 我如何确定要替换的编号?我真的找不到一个好的网站来向我展示一个简单的教程或使用flask执行post的步骤 这是我当前的jQuery函数: $('#left_button').click(function(){ $.post("cameraservo2.py", {direction:"le

我对Flask非常陌生,在继续之前,是否可以使用Flask和json执行从jquery到python函数的“post”?我也不熟悉json,因此所有这些代码对我来说都非常复杂

用于:

我如何确定要替换的编号?我真的找不到一个好的网站来向我展示一个简单的教程或使用flask执行
post
的步骤

这是我当前的jQuery函数:

$('#left_button').click(function(){
            $.post("cameraservo2.py", {direction:"left"}).done(function (reply) {
                $('#camerapos').empty().append(reply);
                alert("left button clicked");});

        });
我可以不使用json来执行此操作吗???

$。post()不使用json。它发送一个常规POST请求,内容类型为
application/x-www-form-urlencoded
。在Flask路由中,这意味着您发布的字段可以在
request.form
对象中找到。如果视图返回HTML,则可以将其插入HTML文档中

只需选择一个反映您想要执行的操作的路线名称:

@app.route('/turn_servo', methods=['POST'])
def turn_servo_ajax():
    direction = request.form['direction']

    # do something with the direction value; it is a string
    if direction == 'left':
        # ...
    else:
        # ...

    return '<div>Turned the servo 50 degrees to the {}</div>'.format(direction)
$.post()不使用JSON。它发送一个常规POST请求,内容类型为
application/x-www-form-urlencoded
。在Flask路由中,这意味着您发布的字段可以在
request.form
对象中找到。如果视图返回HTML,则可以将其插入HTML文档中

只需选择一个反映您想要执行的操作的路线名称:

@app.route('/turn_servo', methods=['POST'])
def turn_servo_ajax():
    direction = request.form['direction']

    # do something with the direction value; it is a string
    if direction == 'left':
        # ...
    else:
        # ...

    return '<div>Turned the servo 50 degrees to the {}</div>'.format(direction)

我从您的代码中复制了代码,以演示上述答案(Martijns)如何与您的代码配合使用

# Save this file as app.py
from flask import Flask, jsonify, render_template, request
from cameraservo2 import your_cam_function

app = Flask(__name__)

@app.route('/turn_servo', methods=['POST'])
def turn_servo_ajax():
    direction = request.form['direction']
    cam_result = your_cam_function(direction=direction)
    return '<div> {} </div>'.format(cam_result)   

if __name__ == '__main__':
    app.run(debug=True)


# This code is in cameraservo2.py and is imported above.
# I've simplified it to a function (not a member of a class).
# You have to work out how to use it in your context.
def your_cam_function(**data):
    import pigpio
    import time

    servos=4
    key = data['direction']

    m=1500
    while (m >= 500 and m <= 2500):
        if (key =="left"):
            m=m+100
        elif (key =="right"):
            m=m-100

    pigpio.start()

    pigpio.set_servo_pulsewidth(servos, m) 
    servostatus= "Servo {} {} micro pulses".format(servos[0], key, m)
    print servostatus
    time.sleep(1)

    pigpio.stop()

    return servostatus
#将此文件另存为app.py
从flask导入flask、jsonify、呈现模板、请求
从cameraservo2导入您的_cam_功能
app=烧瓶(名称)
@app.route('/turn_servo',methods=['POST'])
def turn_servo_ajax():
方向=请求。表单['direction']
凸轮结果=您的凸轮函数(方向=方向)
返回“{}”。格式(cam_结果)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.run(debug=True)
#此代码位于cameraservo2.py中,并在上面导入。
#我已经将它简化为一个函数(不是类的成员)。
#你必须找出如何在你的上下文中使用它。
定义您的_cam_函数(**数据):
进口pigpio
导入时间
伺服系统=4
键=数据[“方向”]
m=1500

当(m>=500和m时,我从您的中复制了代码,以演示上述答案(Martijns)如何与您的代码一起工作

# Save this file as app.py
from flask import Flask, jsonify, render_template, request
from cameraservo2 import your_cam_function

app = Flask(__name__)

@app.route('/turn_servo', methods=['POST'])
def turn_servo_ajax():
    direction = request.form['direction']
    cam_result = your_cam_function(direction=direction)
    return '<div> {} </div>'.format(cam_result)   

if __name__ == '__main__':
    app.run(debug=True)


# This code is in cameraservo2.py and is imported above.
# I've simplified it to a function (not a member of a class).
# You have to work out how to use it in your context.
def your_cam_function(**data):
    import pigpio
    import time

    servos=4
    key = data['direction']

    m=1500
    while (m >= 500 and m <= 2500):
        if (key =="left"):
            m=m+100
        elif (key =="right"):
            m=m-100

    pigpio.start()

    pigpio.set_servo_pulsewidth(servos, m) 
    servostatus= "Servo {} {} micro pulses".format(servos[0], key, m)
    print servostatus
    time.sleep(1)

    pigpio.stop()

    return servostatus
#将此文件另存为app.py
从flask导入flask、jsonify、呈现模板、请求
从cameraservo2导入您的_cam_功能
app=烧瓶(名称)
@app.route('/turn_servo',methods=['POST'])
def turn_servo_ajax():
方向=请求。表单['direction']
凸轮结果=您的凸轮函数(方向=方向)
返回“{}”。格式(cam_结果)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.run(debug=True)
#此代码位于cameraservo2.py中,并在上面导入。
#我已经将它简化为一个函数(不是类的成员)。
#你必须找出如何在你的上下文中使用它。
定义您的_cam_函数(**数据):
进口pigpio
导入时间
伺服系统=4
键=数据[“方向”]
m=1500

虽然(m>=500和m您到底想做什么?
HTTP POST
用于将数据传输到服务器。您是想从服务器获取数据并显示它,还是想将数据推送到服务器进行处理?@msvalkon我正试图按照@msvalko这篇帖子中的要求发布/传输数据并显示返回数据n我刚刚在这里尝试了这个示例,但失败了。我的html和javascript如何知道我使用的是哪一个python文件?在任何地方都找不到它……你假设说
$.post('cameraservo2.py'))
cameraservo2.py
中运行python代码。这绝对不会发生。cherrypy就是这样……事实上,我经常在使用AJAX的web上看到它。不过,我肯定flask不喜欢它:(我也不喜欢flask。你到底想做什么?
HTTP POST
用于将数据传输到服务器。你是想从服务器获取数据并显示它,还是想将数据推送到服务器进行处理?@msvalkon我正试图发布/传输数据以及显示返回数据,正如本文@m中所述svalkon我刚刚在这里尝试了这个示例,但失败了。我的html和javascript如何知道我使用的是哪一个python文件?在任何地方都找不到它……你假设说
$.post('cameraservo2.py'))
cameraservo2.py
中运行python代码。这绝对不会发生。cherrypy就是这样……事实上,我经常在使用AJAX的web上看到它。但是,我确信flask不喜欢它:(我也不喜欢flask。谢谢!这条“路线”部分是令人困惑的。我如何确切地知道在
/turn\u servo
的位置放置什么?它是jquery中的函数名吗?@yvonnezoe:不,它是请求URL的路径部分
/turn\u servo
是您要处理的URL(即
http://yourdomain.com/turn_servo
)。您仍然需要调用
cameraservo2.py
中的某些函数才能真正转动相机,但这是您从用户那里获得方向的方式。只是为了澄清一下,我的python文件必须与我的html文件位于同一目录中,对吗?并且此语句
@app.route('/turn\u servo',methods=['POST']))
必须是唯一的?事实上,我仍然不明白为什么jquery知道发布到哪个python脚本:(不,Flask不是CGI脚本。Flask需要作为单独的服务器运行,或者需要与现有服务器集成。请参阅;此处有CGI选项,但我不建议使用该选项。相反,如果您是Flask的新手,我建议您阅读文档中的教程。运行独立的开发服务器,并让它运行。)查看你的路线和HTML页面。在掌握基本知识之前,不要尝试适应现有的Web服务器。谢谢!路线部分令人困惑。我如何确切地知道在
/turn\u servo
的位置放置什么?这是功能吗