【问题标题】:how to return a dictionary in python django and view it in javascript?如何在 python django 中返回字典并在 javascript 中查看?
【发布时间】:2011-09-22 00:10:49
【问题描述】:

在我看来,我要返回这个:

    data = {'val1' : 'this is x', 'val2' : True}
    return HttpResponse(data)

我想在我的 javascript 中使用字典中的这些信息。有点像这样:

            function(data) {
                if (data["val2"]) {
                    //success
                    alert(data["val1"]);
                }
            }

但是我的 javascript 不起作用。没有弹出警报,我知道字典在离开我的 python 视图时有信息。

如何在我的 JS 中读取这些信息?


好的,所以视图的答案是 simplejson.dumps(data)。 现在,当我在模板上的 JS 中执行警报(数据)时,我得到 {'val1' : 'this is x', 'val2' : True}。 现在我该如何管理问题的第二部分,即读出像

这样的值
        function(data) {
            if (data["val2"]) {
                //success
                alert(data["val1"]);
            }
        }

更新: simplejson.dumps(data) 将字典转换为字符串。因此,在 javascript 中,您需要将字符串转换为对象。 这是最简单但显然不安全的方法。

var myObject = eval('(' + myJSONtext + ')');

【问题讨论】:

  • 即使你使用Ajax,上面问题的答案也会对你有所帮助。
  • 您是否使用 AJAX (XmlHttpRequest) 发出请求?
  • 是的,它是 ajax,这个问题确实帮助我理解我必须在视图中使用 jsdump,谢谢。现在我只想知道如何访问模板中的对象。

标签: javascript python django


【解决方案1】:

你不能直接使用python对象,你必须先将它转换成JSON字符串 查看以下文档。

http://docs.python.org/library/json.htmlhttp://www.json.org/

【讨论】:

    【解决方案2】:

    很简单:

    import json
    data = {'val1' : 'this is x', 'val2' : True}
    return HttpResponse( json.dumps( data ) )
    

    【讨论】:

    • 好的,我在 JS {'val1' : 'this is x', 'val2' : True} 中有这个。现在我如何才能访问特定的值。像val1?喜欢这个数据[“val1”]?当我尝试 alert(data["val1"]);
    • 是的,它仍然给出 undefined :(
    【解决方案3】:

    JSON 是最简单的数据传输方式(您也可以使用 XML)。

    在python中:

    导入json 数据 = {'val1': "这是 x", 'val2': True} 返回 HttpResponse(json.dumps(data))

    在javascript中:

    功能(数据){ 数据 = JSON.parse(数据); 如果(数据[“val2”]){ 警报(数据[“val1”]); } }

    【讨论】:

    • 这是正确的答案,或者像下面的 Shwetabh Sharan 的答案那样指定 mimetype
    【解决方案4】:

    只需在 HttpResponse 中指定 mimetype

        return HttpResponse(
                            json.dumps({"status":False, "message":"Please enter a report name."}) ,
                            content_type="application/json"
                            )
    

    【讨论】:

    • 从 Django 1.9 开始,mimetype 已替换为 content_type
    猜你喜欢
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 2013-02-12
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多