使用Ajax,在服务器或客户端生成额外的标记是否更好?

时间:2009-06-28 22:17:06

标签: asp.net javascript ajax

在AJAX请求中哪个更好,使用现成的HTML进行响应或仅使用数据进行响应并使用JavaScript编写HTML,此JavaScript将使用预定义的HTML模板将即将到来的数据放入页面中并显示在页面上。

在服务器上创建HTML并发送到页面,将减少客户端JS代码,但会增加响应大小。

将数据发送到客户端将减少响应大小,但会增加JS代码。

哪个更好,最常用?

5 个答案:

答案 0 :(得分:5)

我认为正确的解决方案是高度依赖于环境的。对于给定的情况,可能存在正确答案,但没有一种尺寸适合所有答案。通常,如果我使用的是通过AJAX替换的部分视图,我将返回html。如果我在一小部分内容上执行操作,我将使用JSON。我可能更有可能使用JSON,因为它有更多适合的情况,但我尝试为手头的问题选择最佳解决方案。不过,我正在使用ASP.NET MVC。其他框架无疑具有不同的特征解决方案。

答案 1 :(得分:4)

我看过两个都用过。除了OP中列出的权衡之外,我还要补充:

  • 最好将信息作为数据发送,而不是html,因为您将有更多选择如何使用它。
  • 你对JS的舒适程度是什么?
  • 您可以使用多个UI(在不同页面上),并可以重复使用页面上的数据。例如,以简短形式和长格式显示数据,但使用相同的数据源。 - 让客户端在页面上切换两者而不需要服务器之旅。
  • 液体模板系统的纯JS实现可用于客户端模板:http://www.mattmccray.com/archive/2008/12/11/Liquidjs_A_Non-Evaling_Templat

拉​​里

答案 2 :(得分:3)

我在这里非常务实:

这取决于新标记的数量和复杂程度。

如果你需要返回一个精心设计的HTML,最好在服务器端编写它并将其作为数据返回,它也更容易维护。 即使使用现代的js库,在客户端构建复杂的HTML通常也很神秘。 另一方面,如果您的额外标记很小,那么您可以使用js创建它。我从来没有对ASP.NET AJAX做过任何事情,但是有一个asp.net页面,一个rails视图,或者只有一个像<p class='info'>Row Updated</p>这样的小片段的JSP令人困惑。

让代码与您交谈,如果您正在与javascript代码作斗争以在客户端创建标记,那么它可能应该放在服务器端。

最后:不要过分担心HMTL与JSON的大小,如果你这样做,benchmark要求查看差异是否可以忽略不计。

答案 3 :(得分:1)

我认为更常见的方法是通过同步导航将大量标记(HTML / CSS)传递到站点,并使AJAX请求/响应保持尽可能精简[需要引证]。

不可否认,将原始HTML作为AJAX响应返回是非常罕见的。通常它将是一个JSON响应,因为这对于eval()最简单的JS。

由于大多数标记和样式类都是必需的,并且也可能被“静态”内容使用,这使您有机会保持AJAX的小巧,整洁和重点。

答案 4 :(得分:0)

通常在更新屏幕的小部分时,您可以将JSON发送回客户端,客户端可以轻松更新自己。如果您正在尝试构建复杂的Grid,那么最好使用UpdatePanel。