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

如何用jQuery从API获取纯JSON值?后端请求报错求助

解决按需返回JSON或模板的问题

你遇到的Bad Request错误,大概率是直接用request.args['type']访问参数导致的——如果请求里没带type参数,这个写法会抛出KeyError,Flask捕获到未处理的异常就会返回400错误。

给你几个调整方案,能安全实现按需返回JSON或渲染模板:

1. 安全获取请求参数,避免KeyError

把直接取参数的方式改成request.args.get('type'),这个方法在参数不存在时会返回None,不会触发异常。同时推荐用Flask内置的jsonify方法返回JSON,它会自动设置正确的Content-Type响应头,比手动json.dumps更规范。

修改后的后端代码示例:

from flask import jsonify  # 别忘了导入jsonify

@cms.route('/add/asset/<client_id>', methods=["GET"])
@login_required
def asset_add(client_id):
    # 这里替换成你实际获取group数据的逻辑
    group = your_get_group_logic(client_id)
    
    # 安全获取type参数,默认返回None
    request_type = request.args.get('type')
    
    if request_type == 'json':
        # 用jsonify返回标准JSON响应
        return jsonify(group)
    else:
        # 返回渲染模板,直接传Python对象即可(不用转成JSON字符串)
        return render_template("your_template_path.html", summary=group)

2. 前端请求JSON的正确方式

用$.getJSON请求时,只要在URL里带上type=json参数就能拿到JSON数据了:

// 假设client_id是已知的变量
$.getJSON(`/add/asset/${client_id}?type=json`, function(response) {
    // 处理返回的JSON数据
    console.log("获取到的JSON数据:", response);
});

额外注意点

  • 模板里如果需要用JS处理group数据,才需要把它转成JSON字符串(比如json.dumps(group)),然后在模板里用{{ summary|safe }}避免转义;如果只是模板渲染用,直接传Python对象更方便。
  • 处理client_id时,最好加个类型转换的异常处理(比如try-except),防止前端传非整数的ID导致报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:33:50