gpt4 book ai didi

当变量值丢失时,Django 模板中的 Javascript 语法错误

转载 作者:太空宇宙 更新时间:2023-11-04 15:46:20 25 4
gpt4 key购买 nike

我有一个带有 AJAX 菜单的 Django 模板(单击不同的菜单项会重新加载页面的一部分)。每次菜单单击都会通过 AJAX 调用 Django View 函数并返回一些要在页面上显示的数据。

我只加载主页中所有菜单项所需的所有 JS(因为我了解到 AJAX 在 <div> 中返回 JS 然后使用 eval() 执行它不是一个好主意)。由于我仅在菜单主页上加载所有 JS,因此在开始时显然不存在其他菜单选项的数据,因为稍后调用相应 View 时(单击菜单选项时)会出现数据

因此,像下面这样的代码会在控制台上出现语法错误,因为 JS 仅在第一次解析。

<script> var data = {{se_data|safe}}; </script>

现在我无法使用从 View 返回的数据,即使在单击菜单选项之后也是如此,因为 JS 解析首先失败了。我尝试仅在选择相应的菜单选项时使用 if 执行代码,但这也不起作用,因为解析器只是解析所有内容。

我一直在尝试不同的方法来解决这个问题,但似乎找不到有效的方法来解决这个问题。另一种方法是让 View 函数首先返回所有数据,但我担心菜单选项和返回的数据可能会随着时间的推移而增长,从而延迟主菜单页面的初始加载。

这是ajax菜单的点击函数:

$(".ent-menu li a").click(function(e) {
e.preventDefault(); // prevent from going to the page mentioned in href
// get the href
var href = $(this).attr("href");

$("#data_container").load(href, function() {
load_data(); //this function uses the data variable defined earlier
});
});

加载菜单主页时我在控制台中看到错误:

Uncaught SyntaxError: Unexpected token ;     at line 1110
data = ;

因为数据尚不可用。

最佳答案

正如所讨论的,您应该使用 JSON 将数据从 Python 发送到 JS;使用 JSON.parse() 反序列化数据以在 JS 中使用。

关于当变量值丢失时,Django 模板中的 Javascript 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43537282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com