【发布时间】:2018-04-18 07:23:22
【问题描述】:
API 返回 JSON 并渲染模板,当我调用 $.getJSON 时,它只会返回该渲染模板而不是 JSON 值。这个我试过了
if request.args['type'] == 'json':
return json.dumps(group)
else:
return render_template("/c.., summary=json.dumps(group))
但它说
错误的请求
有什么方法可以让我在需要时获取该 JSON 值?
这是我的看法
@cms.route('/add/asset/<client_id>', methods=["GET"])
@login_required
def asset_add(client_id):
if int(current_user.id_) == int(client_id):
group = {}
group['id'] = []
group['pid'] = []
group['name'] = []
for index in range(len([r.id_ for r in db.session.query(Assetgroup.id_)])):
for asset in (Assetgroup.query.filter_by(parent_id=(index or ''))):
group['id'].append(asset.id_)
group['pid'].append(asset.parent_id)
group['name'].append(asset.name)
if request.args['type'] == 'json':
return json.dumps(group)
else:
return render_template("/cms/asset_add.html", action="/add/asset", asset=None,
client_id=client_id,
types=Type.query.all())
else:
return 'permission denied'
这是我的 ajax 请求
$(document).ready(function () {
$('#group_id').click(function () {
$.getJSON(
'/add/asset/' + {{ client_id }},
function (data) {
$('#group_id').find('option').remove();
var len = data.id.length;
for (var i = 0; i < len; i++) {
var option_item = '<option value="' + data.id[i] + '">' + data.name[i] + "</option>";
$('#group_id').append(option_item);
}
}
);
});
});
【问题讨论】:
-
更多信息会有所帮助。
-
整个烧瓶视图。 AJAX 调用、输入数据、所需输出。
-
@pissall 你想让你的视图函数同时返回 html 和 json 吗?我认为你的观点回报很好。您确定将正确的 get 参数传递给您的视图吗?像这样
localhost:5000/test?type=json -
@RajaSimon 我想查看整个视图。以及 AJAX 调用,看看它是否正确接收。
-
在获取请求中通过
type并且仍然如果您没有收到json,那么我可能会误解您的问题。您能否至少显示 ajax 调用和@pissall 询问的整个视图