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

POST请求遇ERR_CONNECTION_REFUSED:JS向Python传数据失败求助

问题排查与修复方案

1. 连接拒绝错误(ERR_CONNECTION_REFUSED)解决

这个错误说明前端无法连接到Flask服务,先确认两点:

  • 确保Flask应用已启动成功,控制台能看到类似 * Running on http://127.0.0.1:5000 的日志,未启动则先运行Python脚本。
  • 若直接打开本地index.html文件(file://协议),会触发跨域拦截。需通过Flask的render_template加载页面,即访问http://127.0.0.1:5000/打开页面,保证前后端同域。

2. JS代码错误修复

你对数据做了两次JSON序列化,导致后端无法正确解析,修正后的代码:

function getAccountInfo () {
  const number = 5
  const message = 'some text'
  const dict_values = {number, message}
  $.ajax({
    url:"http://127.0.0.1:5000/test",
    type:"POST",
    contentType:"application/json",
    // 直接序列化对象,无需重复处理
    data: JSON.stringify(dict_values)
  }); 
} 

错误点:先将dict_values转为字符串s,再对s做JSON.stringify,最终传给后端的是转义后的字符串(如"{\"number\":5,\"message\":\"some text\"}"),后端解析后得到的是字符串而非预期对象。

3. Flask后端代码错误修复

request.get_json()已自动将JSON请求体解析为Python字典,无需再用json.loads(),且返回响应需用jsonify构造标准JSON响应:

from flask import Flask, render_template, request, jsonify  # 导入jsonify
import json

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/test', methods=['POST'])
def test():
    output = request.get_json()
    print(output)
    print(type(output))  # 此时应为dict类型
    # 无需json.loads(output),output已是解析后的字典
    return jsonify(output)  # 用jsonify返回标准JSON响应

if __name__ == '__main__':
    app.run(debug=True)

错误点:

  • request.get_json()返回字典后,再用json.loads()会报错,因为该方法仅接收字符串。
  • 直接返回字典虽偶能工作,但jsonify会自动添加正确的响应头(Content-Type: application/json),是标准做法。

验证步骤

  1. 启动Flask服务,确认控制台显示服务运行在5000端口。
  2. 访问http://127.0.0.1:5000/打开页面,触发getAccountInfo函数。
  3. 查看Flask控制台输出,应能看到{'number': 5, 'message': 'some text'},前端不再出现连接拒绝错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:34:52