在AJAX请求中哪个更好,使用现成的HTML进行响应或仅使用数据进行响应并使用JavaScript编写HTML,此JavaScript将使用预定义的HTML模板将即将到来的数据放入页面中并显示在页面上。
在服务器上创建HTML并发送到页面,将减少客户端JS代码,但会增加响应大小。
将数据发送到客户端将减少响应大小,但会增加JS代码。
哪个更好,最常用?
答案 0 :(得分:5)
我认为正确的解决方案是高度依赖于环境的。对于给定的情况,可能存在正确答案,但没有一种尺寸适合所有答案。通常,如果我使用的是通过AJAX替换的部分视图,我将返回html。如果我在一小部分内容上执行操作,我将使用JSON。我可能更有可能使用JSON,因为它有更多适合的情况,但我尝试为手头的问题选择最佳解决方案。不过,我正在使用ASP.NET MVC。其他框架无疑具有不同的特征解决方案。
答案 1 :(得分:4)
我看过两个都用过。除了OP中列出的权衡之外,我还要补充:
拉里
答案 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。