You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Python接口返回JSON时出现Promise拒绝及语法错误求助

问题排查方案

1. 先确认Python脚本是否在服务器环境运行

  • 直接在浏览器地址栏输入readjobs.py的路径,如果看到的是脚本源码(比如开头的import mys...),说明你只是本地打开HTML文件,根本没让Python脚本运行起来。静态HTML本地打开时,浏览器会把.py文件当普通文本返回,不会执行它。必须用能运行Python脚本的Web服务器来部署。

2. 检查服务器配置,确保能执行Python脚本

  • 用Python自带的简易服务器处理CGI的话,按下面步骤来:
    1. 把readjobs.py放到cgi-bin目录里
    2. 给脚本加可执行权限:chmod +x readjobs.py(Linux/macOS),Windows可以跳过这步
    3. 启动服务器时启用CGI模式:python3 -m http.server --cgi 8000
    4. HTML里调用的路径改成/cgi-bin/readjobs.py
  • 脚本开头必须加shebang行,指定Python解释器:
    #!/usr/bin/env python3
    

3. 确保Python脚本只输出纯JSON

  • 脚本里不能有任何额外输出,比如调试用的print语句、模块导入的警告,必须只返回JSON内容。
  • 一定要先输出正确的HTTP头,再输出JSON:
    print("Content-Type: application/json")
    print()  # 这里必须空一行,分隔HTTP头和JSON内容
    # 然后输出你的JSON数据
    
  • 自己手动运行脚本测试:python3 readjobs.py,看输出是不是只有纯JSON,没有其他杂字符。

4. 前端请求要做好错误处理

  • 别给GET请求乱加Content-Type: application/json,没必要
  • 给Promise加catch捕获错误,避免出现未处理的拒绝:
    fetch('/cgi-bin/readjobs.py')
      .then(response => {
        if (!response.ok) throw new Error('请求失败');
        return response.json();
      })
      .then(data => console.log(data))
      .catch(err => console.error('错误:', err));
    

5. 排查跨域问题

  • 本地测试时,HTML必须通过服务器访问(比如http://localhost:8000/index.html),不能用file://协议直接打开。
  • 如果确实是跨域场景,Python脚本要加CORS头:
    print("Access-Control-Allow-Origin: *")
    print("Content-Type: application/json")
    print()
    

内容的提问来源于stack exchange,提问作者erdomester

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 19:02:39