Joy 宇 2023-02-01 18:16 采纳率: 77.8%
浏览 26
已结题

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

我正在使 javascript 调用 python 结果,但新数据未从 .py 脚本返回/或 document.getElementById("demo").innerHTML 未启动

环境:windows、python,我在visual studio code中用live server打开

<!DOCTYPE html>
<html>
    <body>
<p id="demo">original data</p>

<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 结果

  • 写回答

1条回答 默认 最新

  • m0_54204465 2023-02-01 19:48
    关注

    您的代码中有几个问题。

    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;
      }
    });
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月14日
  • 已采纳回答 2月6日
  • 创建了问题 2月1日