如何从JSON响应中重定向?
我正在尝试使用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')