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
,$('#xx').append(data)
,你的代码会比较长并且难以阅读,相比简单的html标记<table>
?我明白了吗?
【参考方案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的主要内容,如果未能解决你的问题,请参考以下文章
Django AJAX。 dajax 是不是仍然可以或更好地立即迁移到 jQuery(2012 年复兴)?
使用 jQuery 从 .NET 服务获取 JSON 数据:与 ajax 设置混淆