我应该将原始数据或Html作为Ajax响应发送吗?

时间:2012-03-06 15:35:23

标签: javascript ajax asp.net-mvc

我有一个用Asp.net webforms编写的网站。它大量使用ajax。

网站上的大多数表单都使用javascript进行提交。 Javascript验证输入并将其发送到服务器上的/ajax.ashx。服务器处理请求并发回JSON响应。我的javascript使用JSON创建html,它将其插入Dom。

我正在使用asp.net MVC3编写我的网站的新版本。我一直在寻找关于这个主题的教程,其中一些建议以不同的方式做ajax。他们不是发送数据然后用javascript构建+插入html,而是在服务器上创建html,并仅使用javascript将其插入到Dom中。例如,在this tutorial

我应该使用哪种方式?使用新方法会更快,但它更好吗?

5 个答案:

答案 0 :(得分:5)

这是一个主观问题。这两种方法都是可行的,并且没有更好的方法。每种方法都有利弊。

在服务器上构建HTML更容易,与第一种方法相比,您需要的工作量更少,但消耗的带宽更多。

如果你决定采用第一种方式,你可以使用一些客户端模板框架,它可以帮助你简化客户端上DOM元素的生成。

答案 1 :(得分:4)

直接在服务器中创建html代码并使用ajax调用注入它是非常快速和简单的,真正的问题是,以这种方式,您的服务必然会与该特定应用程序一起使用。通过发送RAW数据,您可以允许任何应用程序以任何方式使用该数据,而无需将其绑定到特定应用程序。

答案 2 :(得分:2)

返回json对我来说感觉更灵活;您可以更改json响应所发生的情况,例如它导致的布局。如果返回html,则返回与布局混合的数据。这对我来说不合适。

答案 3 :(得分:2)

我认为将布局与实际数据分开会更好。这就是为什么你应该在脚本而不是HTML之间传递数据。 如果你去发送HTML,考虑你必须构建有效的HTML和CSS,这可能听起来不是很难,但是你将开始使用未加载到调用ajax等文件中的CSS。 p>

始终将内容(数据)与布局分开。这就是为什么有HTML和CSS,将布局与数据分开。那么为什么要在数据之间混合使用HTML呢?

答案 4 :(得分:1)

构建html服务器端可能会更快,而不会让客户端陷入困境,这很重要。使用javascript将数据渲染为HTML需要花费时间,并且并不是每个浏览器都使用js(即IE的旧版本)很快,所以如果你做了很多这样的事情,事情就会变慢。

像以前的海报所说的那样,它有点主观,因为它取决于你向客户卸载了多少。我认为,如果你能在服务器上做事,你应该。

如果您打算使用此服务将JSON返回给其他应用程序/客户端,那么将其保留为JSON并让客户端做他们需要的工作可能是个好主意。