我正在尝试制作一个接受按钮点击的 Web 应用程序。单击的按钮然后将特定设备和操作代码发送到 python 应用程序,然后使用 Lirc 调用 irsend 命令。这是基于此处的源代码/说明:
https://github.com/slimjim777/web-irsend
http://randomtutor.blogspot.com/2013/01/web-based-ir-remote-on-raspberry-pi.html
按钮的 html 很简单,位于“Xbox.html”中
<button onclick="clickedOp('Xbox', 'OnOff');"> Power </button>
这将启动 js 函数:
<script>
function clickedOp(device_name, op) {
$.ajax({url:'/' + device_name + '/clicked/' + op});
}
我知道该函数在单击事件时触发,因为如果我在 clickedOp 函数中放置警报命令,则警报命令会运行
python/flask 应用程序如下所示:
from flask import Flask
from flask import render_template
from flask import request, redirect, url_for
BASE_URL = ''
app = Flask(__name__)
@app.route("/")
def menu():
return render_template('menu.html')
@app.route("/<device_name>")
def remote(device_name):
if device_name == "Xbox":
return render_template('Xbox.html')
@app.route("/<device_name>/clicked/<op>")
def clicked(device_id=None, op=None):
return render_template('test.html')
if __name__ == "__main__":
app.run('0.0.0.0', port=80, debug=True)
ajax 请求之前的所有代码都有效。例如,转到“/”会加载 menu.html 模板并显示指向不同设备的链接
<a href="Xbox"> Xbox </a>
将路由到
"/<device_name>"
在 python 程序中并加载“Xbox.html”。然后按钮加载并单击它会触发“clickedOp(device_name, op)”函数。这就是它崩溃的地方。即使 ajax 请求路由到
"/<device_name>/clicked/<op>"
“test.html”页面未加载
即使 Flask 调试器说有一个成功的 GET 请求(它返回 200)到“/Xbox/clicked/OnOff”(填写上面示例的变量),情况也是如此
所以有什么想法为什么 test.html 没有从 ajax 请求中加载,似乎在我提供的源代码/教程中他使用了相同的 ajax 方法?