在 javascript 中使用 python 输出
Using a python output in javascript
我们想将布尔值从 python 发送到 javascript,以便我们可以在我们的 html 网站中使用它。
我们尝试使用套接字,但这对我们来说太复杂了。我们的下一个想法是使用 api 并且我们知道如何使用 javascript 从 api 获取信息。我们要做的是 post 一个 python 布尔值到一个 api,然后使用 javascript 从 api 得到布尔值。
但是我们不知道该怎么做。
我们对所有代码使用 raspberry pi 和硬件按钮,按下时 returns 在 python 中为真。
我们目前正在测试从 https://healeycodes.com/javascript/python/beginners/webdev/2019/04/11/talking-between-languages.html
中找到的代码
但是这段代码对我们不起作用。
我们还使用 pycharm 作为我们的工作区,这是一个问题吗?
我们当前的代码在javascript:
const request = new XMLHttpRequest();
request.open("GET", url, true);
request.onreadystatechange = function() {
if (request.readyState === 4 && request.status === 200) {
success(JSON.parse(request.responseText));
}
};
request.send();
setInterval(get("button-status.json", receiveStatus), 3000);
}
function receiveStatus(response) {
if (response.status !== status) { // only do something if status has changed
status = response.status;
console.log('button status is now', status);
}
}
let status;
// checks every 100ms
get()
我们用于测试的 python 代码:
import random
import json
import time
button_status = False
path = (r"C:\Users\Sam\Desktop\pythonProject\pythonflask\emplates") # replace with your actual path
def save_button_status():
with open(path + "/button-status.json", "w") as f:
json.dump({'status': button_status}, f)
while True :
value = random.randrange(1, 10)
if ( value <= 5) :
button_status = True
save_button_status()
time.sleep(3)
else :
button_status = False
save_button_status()
time.sleep(3)
print(button_status)
您可以尝试建立一个SQL数据库。在 Python 中写一个 SQL 语句来接收你的布尔值。之后在您的 Web 服务器上创建一个 PHP 脚本来接收 SQL 数据。然后使用 XHTTP JavasScript 请求向 PHP 脚本的 URL 发送请求。
网页中的Javascript无法直接运行您计算机上的Python脚本或从本地终端读取信息。你可以做的是让你的 Python 程序输出一个小的 json 文件到你的 localhost 文件夹,当按下或释放按钮时它被覆盖,像这样:
import json
button_status = False # assuming it is initially off
path = "path/to/your/localhost/folder" # replace with your actual path
def save_button_status():
with open(path + "/button-status.json", "w") as f:
json.dump({'status': button_status}, f)
# Then call save_button_status() whenever the status changes
然后在您的 javascript 中设置一个时间间隔以定期调用获取此 json 文件的函数,并根据该值执行某些操作(如果它已更改):
function get(url, success) {
//--- Get JSON data at the given URL and call `success` if successful
const request = new XMLHttpRequest();
request.open("GET", url, true);
request.onreadystatechange = function() {
if (request.readyState === 4 && request.status === 200) {
success(JSON.parse(request.responseText));
}
};
request.send();
}
function receiveStatus(response) {
if (response.status !== status) { // only do something if status has changed
status = response.status;
console.log('button status is now', status);
}
}
let status;
let interval = setInterval(() => get("button-status.json", receiveStatus), 100); // checks every 100ms
您的本地服务器更新文件时可能会有一些延迟。
我们想将布尔值从 python 发送到 javascript,以便我们可以在我们的 html 网站中使用它。
我们尝试使用套接字,但这对我们来说太复杂了。我们的下一个想法是使用 api 并且我们知道如何使用 javascript 从 api 获取信息。我们要做的是 post 一个 python 布尔值到一个 api,然后使用 javascript 从 api 得到布尔值。 但是我们不知道该怎么做。
我们对所有代码使用 raspberry pi 和硬件按钮,按下时 returns 在 python 中为真。
我们目前正在测试从 https://healeycodes.com/javascript/python/beginners/webdev/2019/04/11/talking-between-languages.html
中找到的代码但是这段代码对我们不起作用。 我们还使用 pycharm 作为我们的工作区,这是一个问题吗?
我们当前的代码在javascript:
const request = new XMLHttpRequest();
request.open("GET", url, true);
request.onreadystatechange = function() {
if (request.readyState === 4 && request.status === 200) {
success(JSON.parse(request.responseText));
}
};
request.send();
setInterval(get("button-status.json", receiveStatus), 3000);
}
function receiveStatus(response) {
if (response.status !== status) { // only do something if status has changed
status = response.status;
console.log('button status is now', status);
}
}
let status;
// checks every 100ms
get()
我们用于测试的 python 代码:
import random
import json
import time
button_status = False
path = (r"C:\Users\Sam\Desktop\pythonProject\pythonflask\emplates") # replace with your actual path
def save_button_status():
with open(path + "/button-status.json", "w") as f:
json.dump({'status': button_status}, f)
while True :
value = random.randrange(1, 10)
if ( value <= 5) :
button_status = True
save_button_status()
time.sleep(3)
else :
button_status = False
save_button_status()
time.sleep(3)
print(button_status)
您可以尝试建立一个SQL数据库。在 Python 中写一个 SQL 语句来接收你的布尔值。之后在您的 Web 服务器上创建一个 PHP 脚本来接收 SQL 数据。然后使用 XHTTP JavasScript 请求向 PHP 脚本的 URL 发送请求。
Javascript无法直接运行您计算机上的Python脚本或从本地终端读取信息。你可以做的是让你的 Python 程序输出一个小的 json 文件到你的 localhost 文件夹,当按下或释放按钮时它被覆盖,像这样:
import json
button_status = False # assuming it is initially off
path = "path/to/your/localhost/folder" # replace with your actual path
def save_button_status():
with open(path + "/button-status.json", "w") as f:
json.dump({'status': button_status}, f)
# Then call save_button_status() whenever the status changes
然后在您的 javascript 中设置一个时间间隔以定期调用获取此 json 文件的函数,并根据该值执行某些操作(如果它已更改):
function get(url, success) {
//--- Get JSON data at the given URL and call `success` if successful
const request = new XMLHttpRequest();
request.open("GET", url, true);
request.onreadystatechange = function() {
if (request.readyState === 4 && request.status === 200) {
success(JSON.parse(request.responseText));
}
};
request.send();
}
function receiveStatus(response) {
if (response.status !== status) { // only do something if status has changed
status = response.status;
console.log('button status is now', status);
}
}
let status;
let interval = setInterval(() => get("button-status.json", receiveStatus), 100); // checks every 100ms
您的本地服务器更新文件时可能会有一些延迟。