gpt4 book ai didi

javascript - 如何从jquery post执行python函数

转载 作者:行者123 更新时间:2023-11-30 17:35:51 25 4
gpt4 key购买 nike

我想在单击图像(按钮)时调用 python 函数,这将允许我从 Web 界面控制伺服。

这是我的部分 jQuery 代码:

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

});

这是我的 Python 代码:

#!/usr/bin/python

def index (self, **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

我的问题是当点击按钮时,它会提示“左键被点击”,这意味着它已经运行了 python 文件。但是我没有显示“servostatus”,而是在我的 #camerapos div 中显示了整个 python 代码。

如果我需要发布更多信息,请告诉我。谢谢!!

最佳答案

您需要一些额外的工具才能从客户端查询调用服务器端 python 代码。 Flask 是一种轻量级的 Python Web 框架,通常是解决此类问题的首选工具。

flask 文档:http://flask.pocoo.org

带有 JQuery 的 Flask:http://flask.pocoo.org/docs/patterns/jquery/

带有 Jquery POST 的 Flask:how can I use data posted from ajax in flask?

要在Flask/Jquery中使用POST,必须在python中注解接收方法。您的代码看起来像这样。

@app.route('/servo_pos', method=["POST"])
def servo_pos():
do_your_work_here
return jsonify({"servo_pos", ret_val})

您还需要稍微调整一下 jquery。

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

});

我不确定这一步,但您可能还需要将 .post 替换为 .ajax。由于您不希望页面在显示新内容之前重新加载,因此这不是传统的发布请求,而是 ajax 请求。

或者,您是否有理由必须使用 post 请求,而 GET_JSON 将不起作用,就像上面的 jquery ajax 模式一样?

重点说明:

  1. 添加`methods=['POST']
  2. 数据请求参数在data.request.data中找到
  3. 返回“jsonified”字典中的数据需要from Flask import jsonfiy

关于javascript - 如何从jquery post执行python函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22087507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com