如何在 python django 中返回字典并在 javascript 中查看?
Posted
技术标签:
【中文标题】如何在 python django 中返回字典并在 javascript 中查看?【英文标题】:how to return a dictionary in python django and view it in 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 + ')');
【问题讨论】:
Passing Python Data to JavaScript via Django的可能重复 即使你使用Ajax,上面问题的答案也会对你有所帮助。 您是否使用 AJAX (XmlHttpRequest) 发出请求? 是的,它是 ajax,这个问题确实帮助我理解我必须在视图中使用 jsdump,谢谢。现在我只想知道如何访问模板中的对象。 【参考方案1】:你不能直接使用python对象,你必须先将它转换成JSON字符串 查看以下文档。
http://docs.python.org/library/json.html 还 http://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
以上是关于如何在 python django 中返回字典并在 javascript 中查看?的主要内容,如果未能解决你的问题,请参考以下文章
Python - 如何在 django 模板中为所有值并排显示两个键的字典值