为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 JSON.parse() 在我的代码中不起作用?

为什么 JSON.parse() 在我的代码中不起作用?

慕村9548890 2021-08-11 21:33:21
我正在使用 Django 并尝试直接使用 javascript 获取数据。这里有一些代码。在 idx_map.html 中,JS 部分是这样的: var act = '{{ activities_json }}';    document.getElementById("json").innerHTML = act[0];    var obj = JSON.parse(act);    document.getElementById("demo").innerHTML = 1;我试图找到错误,所以我把一些代码输出到页面的行。问题是JSON.parse()线路。如果我注释该行,我可以在我的 HTML 页面中看到 [ 和 1,这意味着还没有错误。但是如果我取消注释该JSON.parse()行,我就看不到 1 了,这表明JSON.parse()代码有一些错误。但我没有发现任何错误。有人可以帮我吗?在views.py 中,我将对象序列化为一个json 文件。代码是:def map(request):activities_json = serializers.serialize("json", Activities.objects.all())context = {    "activities": Activities.objects.all(),    "activities_json": activities_json,}return render(request, "CS_Activities/idx_map.html", context)所以行为应该是这样的(作为一个字符串?):[    {"model": "CS_Activities.activities", "pk": 1, "fields": {"act_name": "gun shot", "location": "York Universitty", "loc_lat": 43.76776, "loc_long": -79.50297, "time": "2018-11-05T20:25:08Z", "description": "a people dead"}}, {"model": "CS_Activities.activities", "pk": 2, "fields": {"act_name": "another gun shot", "location": "York Village", "loc_lat": 43.76, "loc_long": -79.5, "time": "2018-11-05T22:35:06Z", "description": "A person shot dead while walking"}}]更新:在 idx_map.html 中,如果我只是将 var act 替换为长字符串,则不会出现错误。所以我认为我的问题是如何从 Django 数据库中以 json 文件格式检索数据。
查看完整描述

1 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

您需要使用safewhich 将字符串(在本例中为 JSON)标记为在输出之前不需要进一步的 HTML 转义。


var act = '{{ activities_json|safe }}';

这部分代码:


document.getElementById("json").innerHTML = act[0];

只获取字符串的第一个元素,即 [.


这部分代码


var obj = JSON.parse(act);

返回错误,因为您之前没有使用safe过并且引用 (")&quote;与模板中一样输出,这是无效的。我想您想要这样的东西:


var act = '{{ activities_json|safe }}';

var lat = 43.767760;

var lng = -79.502970;

var latLng = {lat: lat, lng: lng};       


var obj = JSON.parse(act);

document.getElementById("json").innerHTML = obj[0];

现在obj[0]将返回第一个 JSON 元素,但我不确定您想用它做什么。


查看完整回答
反对 回复 2021-08-11
  • 1 回答
  • 0 关注
  • 489 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信