如何从JSON响应中重定向?

2 投票
2 回答
6860 浏览
提问于 2025-04-17 21:25

我正在尝试使用Flask和一个叫Dropzone的JavaScript上传工具来上传文件,并在上传完成后进行重定向。文件上传得很顺利,但我用Flask的传统重定向方式:

return (redirect ("http://somesite.com"))

却没有任何反应,页面没有变化。我觉得这是因为:上传文件的请求头被设置为 Accept:"application/json",而响应头却是 <"text/html; charset=utf-8"。我该如何返回一个JSON响应,然后再进行重定向呢?直接这样做:

 return (redirect (jsonify("http://somesite.com")))

会出现错误:

ValueError: dictionary update sequence element #0 has length 1; 2 is required

我知道浏览器不会从JSON头进行重定向。那么我该如何将重定向的URL从Flask发送回我的JS应用,让它在客户端进行重定向呢?我已经用普通的HTML表单提交文件测试过了,效果很好,所以我很确定这是JSON的问题。谢谢。

2 个回答

1

如果你在使用AJAX请求,那么你需要在返回的JSON响应中包含目标地址,然后在你的JavaScript代码中把这个地址赋值给window.location.href。

1

你可以为响应设置一个类型,这个类型叫做mimetype:

response = redirect('http://somesite.com')
response.mimetype = 'application/json'

return response

或者:

return make_response(redirect('http://example.com'), mimetype='application/json')

撰写回答