在 javascript 中通过 django 模板检索 json 数据时出错,在参数列表后给出 Uncaught SyntaxError: missing )
Posted
技术标签:
【中文标题】在 javascript 中通过 django 模板检索 json 数据时出错,在参数列表后给出 Uncaught SyntaxError: missing )【英文标题】:Error on retrieving json data through django templates in javascript gives Uncaught SyntaxError: missing ) after argument list 【发布时间】:2021-05-15 14:21:31 【问题描述】:我正在通过 django restframework 中的 apiview 将 json 响应数据渲染到 html 模板 list.html,我想在其中以 javascript 代码检索此数据。 然而,每次它在参数列表错误后给出“缺失”,即使它们实际上并不存在于接收到的数据中(如在 chrome 的检查工具中所见)
发现错误
var list =JSON.parse("data|safe")
views.py 中渲染数据的代码 apiview 是:
@api_view(['GET','POST'])
def memeList(request):
if request.method=='GET':
meme = Meme.objects.all().order_by('-meme_id')[:100]
serializer = MemeSerializer(meme, many=True)
elif request.method=='POST':
serializer=MemeSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
serJS = JsonResponse(serializer.data,safe=False)
return render(request,'list.html','data':serJS.content)
任何解决方案,因为我已经尝试了互联网上所有可用的解决方案,但问题仍未解决。
【问题讨论】:
【参考方案1】:问题在于您的views.py文件中sn-p的最后一行:
return render(request, 'list.html', 'data': serJS.content)
这里,serJS.content
返回一个表示内容的字节串。要将其解析为 JSON,您需要将其转换为字符串,在 html 正文中呈现,然后将其正确解析为 JSON。改用这个:
return render(request, 'list.html', 'data': serJS.content.decode())
【讨论】:
【参考方案2】:你不能这样做:
var list = JSON.parse("data|safe")
data|safe
将呈现无法(可靠)解析为 JSON 的 Python 对象。
您可能想要的是使用json_script
模板过滤器。按照文档中的步骤在 JavaScript 中获取 JSON 格式的数据。
【讨论】:
它在不使用安全过滤器时给出“意外令牌&”错误。问题出在我传递数据的视图中,我必须首先传递给解码函数,如接受的答案中所述.. data 是一个bytes
对象,不能用 JSON 表示。你仍然不应该使用JSON.parse("data|safe")
。这是一个等待发生的 XSS 漏洞。使用json_script
。以上是关于在 javascript 中通过 django 模板检索 json 数据时出错,在参数列表后给出 Uncaught SyntaxError: missing )的主要内容,如果未能解决你的问题,请参考以下文章