繁体   English   中英

使用Ajax加载新内容

[英]Loading New Content with Ajax

我已经遇到过几次这种情况,不确定最好的方法是什么。

假设我有一些动态内容,用户可以通过Ajax添加到其中。 例如,使用Stack Overflow的注释-人们可以使用Ajax将注释直接添加到页面上。

问题是,如何实现新内容的添加本身。 例如,看起来好像ajax调用(Stack Overflow用于添加注释),仅返回html即可替换所有注释(而不仅仅是新注释)。 这种方式将冗余逻辑保存在Javascript代码中,该逻辑必须“知道” HTML的外观。

这是最好的方法吗? 如果是这样,如何最好地在Django中实现它,以确保没有冗余(即,视图不必知道html的外观?)

谢谢!

编辑:在我的特定情况下,没有其他评论同时被添加的危险-这纯粹是最佳实现的问题。

如果内容很简单,我将获取JSON并在jQuery中构建HTML。 如果很复杂,我将创建一个模板并在服务器上对其进行调用render()并返回HTML(jQuery可以附加到其他内容或替换现有内容)。

更新所有评论的原因是要考虑到其他人同时也可能提交的其他评论。 要使网站真正保持动态,您可以执行此操作,甚至在页面加载时执行此操作,使用最新提交的评论ID加载变量,并设置一个计时器,此后返回以检查自那时以来是否还有更多评论。 如果存在,则将它们作为JSON对象返回,并将它们一次DIV附加到当前页面上。 那将是我首选的处理方式,因为您随后可以基于每个DIV的ID或rel来定位操作,而这些ID或rel直接与数据库中注释的ID相关联...

我既不精通Django,也不精通Python,但我想所有服务器端语言的基本逻辑都是相似的。

在权衡两种方法的利弊时,事情取决于您要优化的内容。 如果带宽很重要,那么与传输现成的HTML相比,显然在通信中使用纯JSON可以减少延迟。

但是,将服务器端视图功能复制到Javascript是一个乏味且容易出错的过程。 这只需要很多时间。

我个人认为,在大多数情况下(对于中小型流量站点),将HTML片段放到服务器端,并简单地替换AJAX回调函数中的容器内容(例如div内容)是完全可以的。 当然,替换整个页面很愚蠢,因此Django应用程序需要支持输出文档的特定区域。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM