如何在HTML级别将Python列表传递给Javascript
我试图传递Python列表以将其用作HTML文件中的Javascript数组,但当我在Javascript级别检查传递的Python列表时,控制台日志显示它是字符串 我正试图在Django环境中做到这一点 Django views.py如何在HTML级别将Python列表传递给Javascript,javascript,python,django,Javascript,Python,Django,我试图传递Python列表以将其用作HTML文件中的Javascript数组,但当我在Javascript级别检查传递的Python列表时,控制台日志显示它是字符串 我正试图在Django环境中做到这一点 Django views.py def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['names'] = list( Store.o
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['names'] = list(
Store.objects.values_list('businessName', flat=True))
return context
index.html
<span data-names="{{ names }}">...</span>
<script>
console.log(type($('span').attr('data-names')));
</script>
所有数据-*
属性都保存为字符串。要获得正确的JSON类型对象,您需要使用JSON.parse
<span data-names="{{ names }}">...</span>
<script>
const data = JSON.parse($('span').attr('data-names'));
console.log(data);
</script>
变量名称={names | safe}
safe
tag是一个选项。如果python在这里输出一个JSON数组,那么将其包装在JSON中。parse
可能会为您提供一个JS对象。在这一部分的底部是说所有的data-*
属性都是字符串。我尝试了JSON.parse
,但它在JSON.parse()的位置1抛出了JSON中的Uncaught SyntaxError:Unexpected token',所以我尝试了JSON.parse(JSON.stringify(…)
,但它仍然返回字符串。我将console.log结果放在原始帖子中。你能检查一下吗?我不知道django,但是关于从django返回JSON的问题。看起来Javascript不读取{{names | safe}}。
<span data-names="{{ names }}">...</span>
<script>
const data = JSON.parse($('span').attr('data-names'));
console.log(data);
</script>
from django.http import JsonResponse
return JsonResponse({'foo':'bar'})
<script>
var names = {{ names|safe }}
</script>