猿问

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

我正在使用 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 文件格式检索数据。


慕村9548890
浏览 490回答 1
1回答

凤凰求蛊

您需要使用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 元素,但我不确定您想用它做什么。
随时随地看视频慕课网APP

相关分类

Python
我要回答