如何用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
相关产品推荐
相关产品推荐

