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

Should I send raw data or Html as an Ajax response?

本文关键字:响应 Ajax 作为 原始数据 Html 我应该      更新时间:2023-09-26

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

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

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

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

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

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

如果您决定采用第一种方法,可以使用一些客户端模板框架,这可能有助于简化客户端上DOM元素的生成。

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

返回json对我来说更灵活;你可以改变json响应的内容,比如它产生的布局。如果你返回html,你会返回混合了布局的数据。我觉得这不对。

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

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

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

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

如果您要使用此服务向其他应用程序/客户端返回JSON,那么最好将其保留为JSON,让客户端自己做它需要做的事情。