我想在单击图像(按钮)时调用一个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”,而是将整个python代码显示在我的#camerapos
div中
如果我需要发布更多信息,请告诉我。谢谢!!
为了从客户端查询调用服务器端python代码,您需要一些额外的工具。Flask,一个轻量级的python web框架通常是解决此类问题的首选工具。
烧瓶文件:http://flask.pocoo.org
带JQuery的烧瓶:http://flask.pocoo.org/docs/patterns/jquery/
带Jquery POST的烧瓶:how can I use data posted from ajax in flask?
要在Flask/Jquery中使用POST,必须在python中注释接收方法。你的代码看起来像这样。
您还需要稍微调整jquery。
我不确定这一步,但您可能还需要用.ajax替换.post。由于不希望在显示新内容之前重新加载页面,因此这不是传统的post请求,而是ajax请求。
或者,是否有理由必须使用post请求,而
GET_JSON
不会像上面的jquery ajax模式那样工作?关键注意事项:
data.request.data
from Flask import jsonfiy
除了运行完整的服务器端python web框架之外, 最简单的方法是使用
cgi
,例如uwsgi。有关最小工作设置的更多信息,请参见官方的python docs。
互动性
如果您的webapp需要与服务器进行更多的交互,那么您可能需要考虑使用websockets而不是AJAX作为通信框架。 警告: 旧浏览器不支持WebSocket。
一个well developed framework that has websocket support is tornado的例子。
相关问题 更多 >
编程相关推荐