我正在使 javascript 调用 python 结果,但新数据未从 .py 脚本返回/或 document.getElementById("demo").innerHTML
未启动
环境:windows、python,我在visual studio code中用live server打开
html>
<html>
<body>
<p id="demo">original datap>
<script type="text/javascript">
const spawner = require('child_process').spawn;
const data_to_pass_in ={
data_sent:'Send this to python script',
data_returned: undifined
};
console.log('Data sent to py script:', data_to_pass_in);
const python_process = spawner('python',['./get_sql_where_02.py', JSON.stringify(data_to_pass_in)]);
python_process.stdout.on('data',(data)=>{
console.log('Data receive from py script:',JSON.parse(data.toString()));
});
document.getElementById("demo").innerHTML = data_to_pass_in;
script>
body>
html>
import mysql.connector
import webbrowser
import time
import pymysql
import sys
import ast
mydb = mysql.connector.connect(
host="196.8.98.141",
user="root",
password="password",
database="data_db",
auth_plugin='mysql_native_password'
)
mycursor = mydb.cursor()
mycursor.execute("SELECT P_TITLE,P_PRODUCT FROM webpage WHERE P_ID = '001'")
myresult = mycursor.fetchall()
print(myresult)
data_to_pass_back = myresult
我刚学了几个小时的 js,所以可能是一个简单的问题,我需要 javascript 在 web 上调用 python 结果
您的代码中有几个问题。
JavaScript 中的 const spawner = require('child_process').spawn; 这行代码是错误的,因为在浏览器环境中并不支持使用 require 来加载模块。
您正在使用 const python_process = spawner('python',['./get_sql_where_02.py', JSON.stringify(data_to_pass_in)]); 运行 Python 脚本,但是在浏览器中不能直接运行本地 Python 脚本。您可以使用 ajax 请求或者使用服务器端语言(如 PHP)调用 Python 脚本来实现这一功能。在 document.getElementById("demo").innerHTML = data_to_pass_in; 这行代码中,您将原始数据写入 HTML,但是未将 Python 脚本返回的数据写入 HTML。您需要在 python_process.stdout.on('data',(data)=>{ 回调函数中处理 Python 脚本返回的数据,并将处理后的数据写入 HTML。
您可以修改您的代码来解决以上问题。例如,您可以使用 jQuery 的 ajax 方法:
$.ajax({
type: 'POST',
url: 'get_sql_where_02.py',
data: {data_sent:'Send this to python script'},
success: function(data) {
document.getElementById("demo").innerHTML = data;
}
});