如何解决JavaScript调用Python代码时返回源码而非执行结果的问题
问题修复方案
问题根源
你直接请求.py文件时,本地静态服务器默认会将Python文件识别为普通静态文本资源返回,不会主动执行脚本逻辑,因此你拿到的是源码而非运行结果。
修复步骤
1. 搭建可执行Python逻辑的后端服务
这里以轻量的Flask框架为例,配置成本极低:
- 先安装依赖:
pip install flask flask-cors(flask-cors用于解决跨域问题) - 新建后端启动文件
app.py,代码示例如下:
from flask import Flask from flask_cors import CORS # 导入你自己写的uploadFile.py import uploadFile app = Flask(__name__) CORS(app) # 允许跨域请求 @app.route('/run-upload', methods=['GET']) def run_upload_script(): # 调用uploadFile.py中的核心执行逻辑,建议你把uploadFile里要执行的代码封装为main函数 execute_result = uploadFile.main() # 返回执行结果给前端 return str(execute_result) if __name__ == '__main__': # 启动本地后端服务,端口为5000 app.run(port=5000, debug=True)
2. 修改前端请求地址
把你原JS代码中直接请求uploadFile.py的部分,改成请求后端提供的接口:
const xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { alert(this.responseText); alert("hello from js"); } }; // 修改为后端接口地址,不再直接请求py文件 xhttp.open("GET", "http://localhost:5000/run-upload"); xhttp.send();
3. 运行测试
- 先在终端执行命令启动后端服务:
python app.py - 再打开你的前端页面,点击按钮即可拿到Python脚本的执行结果
补充说明:如果你不想用Flask框架,也可以配置Nginx、Apache等Web服务器的CGI规则,让服务器识别到.py后缀时自动执行脚本返回结果,但该方案配置门槛更高,更推荐上述轻量后端方案。
内容的提问来源于stack exchange,提问作者lotus airtel300
相关产品推荐
相关产品推荐

