jquery ajax - 更好地返回 json 或纯 html

Posted

技术标签:

【中文标题】jquery ajax - 更好地返回 json 或纯 html【英文标题】:jquery ajax - return json or plain html better 【发布时间】:2011-05-09 10:36:00 【问题描述】:

当时间从ajax返回时, 我应该作为 json 编码返回,并使用 jquery.parseJSON 并使用 document.createElement 并将数据附加到刚刚创建的 Element 中。

还是以html文本返回更好?

例子,

<div id="contentcontainer"></div>

$.ajax(
   type: "POST",
   url: "some.php",
   data: "name=John",
   success: function(msg)
     msgObj = jquery.parseJSON(msg);
     var div = document.createElement('div');
     div.style.color="red";
     $(div).append(msgObj.name);
     $('#contentcontainer').append(div);
   
 );

 //some.php
 if($_POST['name'])
    echo json_encode( array('name'=>$_POST['name']) );
 

或者我应该这样做?

<div id="contentcontainer"></div>

$.ajax(
   type: "POST",
   url: "some.php",
   data: "name=John",
   success: function(msg) 
     $('#contentcontainer').append(msg);
   
 );

 //some.php
 if($_POST['name'])
    echo '<div style="color:red">'.$_POST['name'].'</div>';
 

修改...对不起我的语法错误

当然,这只是一个例子,真实案例会有很多数据,可能是html表格格式。

当然,这只是一个例子,真实案例会有很多数据。

如果它有很多数据,那么我需要写很多document.createElement()。 而且这样写很费时间 document.createElement('table'); document.createElement('tr');

而不是(以 HTML 形式返回并添加到容器中)

对我来说,我认为第二种格式(返回 HTML)更容易。

但不确定性能方面,哪个更好?

请指教。

【问题讨论】:

JSON。因为它会减少您的带宽并将您的数据与您的演示文稿分开。此外,硬编码样式也是个坏主意。 我不认为它会减少带宽。 uniqsign 说“当然,这只是一个例子,实际情况下它会有很多数据,可能是html表格格式。”,您建议将HTML封装成JSON,实际上会占用更多带宽。 对不起,我的错,我不是说要封装HTML到JSON,我的意思是如果它有很多数据,可能我写起来更容易
而不是 document.createELement.
除此之外,如果你写了很多document.createElement,$('#xx').append(data),你的代码会比较长并且难以阅读,相比简单的html标记&lt;table&gt;?我明白了吗? 【参考方案1】:

Sébastien 和 Zain 都有有效积分。这取决于您所谈论的种类性能。

如果您想减少服务器的带宽,那么您应该返回 JSON 并使用客户端 javascript 创建显示。

但是,如果您的数据集很大,在大多数创建显示客户端的计算机上,浏览器可能会滞后并导致 UI 无响应。如果这对您很重要,那么您可以考虑从服务器返回 HTML。

【讨论】:

【参考方案2】:

不,我不建议从 php 页面返回 html。仅返回 json 数据并在客户端解析并显示在 UI 上。因为html 总是比 json 重。因此,如果您使用 json,它将保存您的 bandwidth

如果你想要一个例子,去看看twitter在做什么,他们只返回json然后在客户端操作json。

【讨论】:

是的,json 将是从中获取数据的最佳选择。 @uniq 的优点是可以维护对象层次结构。 我认为主要问题是关于性能。在这种特殊情况下,返回批量数据、封装在 JSON 中并在客户端处理它们会增加更多的处理时间。 @Sébastien 我不是在谈论返回以 JSON 封装的批量数据。我说的是返回纯 json 对象,然后在客户端对其进行操作。 好的,您正在推荐最佳实践,我同意您的方法。在这个问题的特殊情况下,我考虑了原始评论“真实情况下会有很多数据,可能是 html 表格格式。”【参考方案3】:

是的,如果您对 AJAX 调用的结果没有任何操作/解释,您应该返回 HTML。

【讨论】:

也许这个线程上的每个人都忘记了 initial 问题是哪个状态:但不确定性能方面,哪个更好? 我不这么认为,当您在 JSON 中进行 ENCODE() + DECODE() 时,服务器和客户端都有额外的处理时间。 在服务器上创建 html 会比 json 更昂贵。好的,举个例子,你将从 php 页面返回数据的格式? 问题是“真实案例它会有很多数据,可能是html表格格式。”

以上是关于jquery ajax - 更好地返回 json 或纯 html的主要内容,如果未能解决你的问题,请参考以下文章

哪个jQuery选择器可以更好地优化多个元素

Django AJAX。 dajax 是不是仍然可以或更好地立即迁移到 jQuery(2012 年复兴)?

使用 jQuery 从 .NET 服务获取 JSON 数据:与 ajax 设置混淆

JQuery处理json与ajax返回JSON实例[转]

Struts2+Jquery实现ajax并返回json类型数据

jQuery Ajax - 如何错误地获取响应数据