从本地 HTML 文件,使用 Python/AJAX 关闭计算机

From local HTML file, shutdown down computer with Python/AJAX

用这个已经有一段时间了,发现了一些有用的东西,但我对 AJAX 还不是很好...

我正在努力在 Raspberry Pi 上制作一个 chromium 浏览器信息亭(这很好)但是在信息亭模式下,没有 "shutdown" 按钮。我在 chromium-browser 中显示一个本地 HTML 文件,我想在本地 HTML 文件中创建一个按钮,该按钮将通过调用一个简单的 [=] 使用 AJAX/JQuery 关闭计算机33=] 我编写的代码:

#! /usr/bin/python -u

import os
import shutil
import sys

os.system('sudo shutdown -h now')

我找到了这个:

$.ajax({
  type: "POST",
  url: "~/shutdown.py",
  data: { param: text}
}).done(function( o ) {
   // do something
});

我该如何连接呢?我的 python 没有输出,只想调用 python 代码并关闭 raspberry pi。 python 代码当我 运行 它在它自己的终端中按预期关闭计算机时。

或者,如果您对在 Kiosk 模式下以最 "user friendly" 方式关闭 Rpi 有任何其他想法,请告诉我!使用它的人不会知道如何使用终端或 SSH-ing...

谢谢!

可能最简单的方法是 运行 侦听请求然后关闭计算机的本地 Web 服务器。而不是只显示本地 HTML 文件,实际上是从烧瓶中提供它。这给了你更多的自由,因为你可以 运行 命令服务器端(即使在这种情况下服务器和客户端是相同的)你没有像在浏览器环境中那样的限制。

你可以用烧瓶做到这一点。

像这样创建一个目录

/kiosk
  /templates
    index.html
  app.py

index.html 是您当前的 html 页。这是 app.py 的样子。

from flask import Flask, render_template
app = Flask(__name__)


@app.route("/")
def index():
    return render_template('index.html')

@app.route("/shutdown")
def shutdown():
    os.system('sudo shutdown -h now')


if __name__ == "__main__":
    app.run()

您的 ajax 调用将如下所示

$.ajax({
  type: "POST",
  url: "/shutdown"
});

然后只需 cd 进入应用程序目录和 运行 python app.py,这将启动 Web 应用程序。然后打开浏览器并转到 localhost:5000