javascript – 最初渲染页面,使用相同的模板HTML通过AJAX进行更新

前端之家收集整理的这篇文章主要介绍了javascript – 最初渲染页面,使用相同的模板HTML通过AJAX进行更新前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设您有一个名为“查看故事”的视图,该视图只是通过 Python / Django在后台呈现的网页.在该页面上,使用Django的模板系统(在循环中),将底部的注释列表显示为“查看故事”模板的一部分.此页面还允许您向列表添加注释.这是通过AJAX完成的,并且该页面被更新为新的注释(不发送新的全页请求).

现在,当将新的注释添加到列表的末尾时,我希望为此新注释生成的HTML(< li>)内的内容使用与用于生成发送给客户端的原始注释完全相同的代码通过原始请求.

有多种方法可以做到这一点:

>将初始渲染引发注释数据转换为JavaScript变量,一旦页面呈现,就可以通过javascript添加内容.然后当添加新的注释时,可以使用相同的JavaScript来渲染新的.问题:从搜索引擎的角度来看,我不确定如果在页面呈现后生成的话,google可以对这些注释进行索引 – 我猜不
>每次通过AJAX添加新的注释时,请求ajax请求将实际的HTML返回到页面上,而不仅仅是新注释的JSON数据.可以使用用于呈现原始页面的相同模板代码片段生成HTML.这样做的问题是,它将AJAX请求与特定视图相关联,或将其与不喜欢的方式进行呈现.
>类似于#2,除了单独的请求来检索新的注释的HTML或者所有的注释,列表只是擦除和重新呈现.不喜欢这样做的原因是它的效率低下,不必要的耗时.

因此,总而言之,我想要避免为单个视图重复模板/ HTML代码.而且,我想提出一些关于别人工作的建议,因为我很确定这是一个常见的情况,无论后端的技术如何.

谢谢!

解决方法

我认为选项2是最好的.它是增量的(仅在添加注释时再次发出评论),并重新使用呈现.如果您不喜欢从Ajax请求中只返回HTML,那么将响应作为JSON结构,其中包含HTML作为一个组件.然后,您也可以携带状态(或任何),而无需额外的请求获取HTML.

选项1是浪费的:服务器应该首先显示页面.

选项3也是浪费的:为什么要两个请求添加单个注释?

猜你在找的Ajax相关文章