【问题标题】:How to redirect from a JSON response?如何从 JSON 响应重定向?
【发布时间】:2014-04-11 16:56:45
【问题描述】:

所以我尝试使用 Flask 和 Javascript 上传器(Dropzone)上传文件并在上传完成后重定向。文件上传正常,但使用烧瓶中的传统重定向:

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 问题。谢谢你。

【问题讨论】:

  • 浏览器如何发送请求? 302 重定向的 mimetype 无关紧要(重要的是 HTTP 状态),但如果您尝试重定向 AJAX 请求,则需要更新 JavaScript 代码以执行改为浏览器页面。

标签: javascript python json redirect flask


【解决方案1】:

如果您使用 AJAX 调用,则需要在 JSON 响应中返回目标位置,然后在您的 JS 代码中将 window.location.href 的值设置为此。

【讨论】:

    【解决方案2】:

    您可以设置响应的 mimetype:

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

    或者:

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

    【讨论】:

    • mimetype 与它无关; OP 很可能在这里使用 AJAX。
    • @jack:我会好好珍惜的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 2013-12-04
    • 2016-07-20
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    相关资源
    最近更新 更多