0

是否可以访问通过 jquery 中的 .getJSON 调用作为 jinja2 变量获得的数据?

 $.getJSON(
            $SCRIPT_ROOT +"/gitem/"+node.id,
            function(data){
                if (data.length > 0){

                    $.each(data, function(index,val_dict) {




                        var button_id = "button_"+String(index);
                        var popup_id = "element_to_pop_up_"+String(index);

                        var append_string = sprintf('<div class="icony"><img src="%s"  height="75" id="%s" >%s</div>',val_dict.img_url,button_id,val_dict.img_caption);
                        var bpopup_element = sprintf('<div id="%s"><a class="bClose"><img src="%s" width="500px">X<a/></div>',popup_id,val_dict.img_url)

                    $('.data_area').append(append_string+bpopup_element);

                        $('#'+popup_id).hide();

                        $('#'+button_id).bind('click', function(e) {
            e.preventDefault();
            $('#'+popup_id).bPopup();

                        });

                    });
                }
                else
                {
                    var append_string = '<div class="icony">No Images to display for this category</div>';
                    $('.data_area').append(append_string);
                }

                $("#list_viewer").css("display", "block");
            });

例如在上面我正在获取数据,然后在 js 中构造 DOM。虽然最好的方法是通过 .getJSON 导入数据,然后将数据设置为 jinja2 变量。

稍后我可以在 jinja2 模板中使用该变量吗?

这可能吗?


或者更好...

可以从 .getJSON 函数中调用 jinja 宏吗?这也可以允许在 jinja2 中嵌入 json 数据......

感谢您的任何指针...

4

1 回答 1

1

可能不是。Jinja 通常在服务器上运行,在将您的网站模板发送到客户端之前呈现它们。客户端(即您的网络浏览器)将无法访问模板。

如果您想使用 Jinja 模板来呈现客户端 JSON 对象,您可以查看Jasinja,这是一个将您的 Jinja 模板转换为 JavaScript 的工具,然后您可以在浏览器中使用它。存在许多类似的工具。

最后,另一种解决方案是将您的 JSON 数据发送到 Web 服务器,通过 Jinja 将它们呈现为 HTML,然后在 XMLHttpRequest 响应中发回生成的 HTML。但是,如果您从用于呈现模板的同一服务器获取此 JSON 数据,则最好将 HTML 直接发送到客户端并从那里添加到 DOM。

于 2013-01-03T12:42:22.173 回答