javascript 从 py 脚本接收output,document.getElementById("demo").innerHTML

我正在使 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>
  • get_sql_where_02.py
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

img

我刚学了几个小时的 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;
  }
});