ボタンのクリックを受け入れる Web アプリケーションを作成しようとしています。クリックされたボタンは、特定のデバイスと操作コードを Python アプリケーションに送信し、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 デバッガーが "/Xbox/clicked/OnOff" (上記の例の変数を入力) への GET 要求 (200 を返す) が成功したことを示している場合でも当てはまります。
私が提供したソースコード/チュートリアルで彼が同じ ajax メソッドを使用しているように見えるのに、なぜ test.html が ajax リクエストからロードされないのか考えてみませんか?