首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从AJAX调用返回和显示数据的最佳实践

从AJAX调用返回和显示数据的最佳实践
EN

Stack Overflow用户
提问于 2009-05-20 20:15:06
回答 7查看 2.9K关注 0票数 7

我在页面上设置了一些jquery/php交互。它向服务器提交一些数据,并取回数据记录,然后这些记录将在页面上对齐,以便进行比较和可能的操作。

我的问题是,返回信息然后显示信息的最佳实践是什么?

  • 返回JSON对象,然后使用js动态创建html并显示数据?
  • 返回JSON对象,然后将数据放入页面上已经创建的数据容器中?
  • 从服务器返回纯html并将其放到页面上?

昨晚我在脑子里翻来覆去,不知是否有一种方法会因为任何特定的原因而更好。

我不是js大师,所以不太确定这些不同方法的优缺点和注意事项。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-05-20 20:27:13

我认为它最终取决于你的应用程序。

纯HTML是最简单的,你只是顺其自然和中提琴。JQuery使添加适当的事件和不合适的事件变得轻而易举。

但是,每当我使用AJAX时,它总是演变成返回JSON和动态构建元素。例如,如果你正在填充一棵树,那么得到合适的筑巢可能会变得很混乱。这迫使您无论如何都必须编写客户端代码,这样从一开始就使用JSON就更干净了。

另外,如果您计划使用来自其他页面的数据调用,那么使用JSON是可行的,因为HTML将被修复。

票数 7
EN

Stack Overflow用户

发布于 2009-05-20 20:32:44

这完全取决于在应用程序中设置东西的方式。例如,我更喜欢返回JSON (列表中的第二种方法),因为我有一个“错误代码”参数,在更新页面上的内容之前我签入了onSuccess函数,如果不是零,我会通知用户错误,包括从服务器返回的错误消息(服务器端验证、数据库超时等等)。

票数 4
EN

Stack Overflow用户

发布于 2009-05-20 21:29:37

我想你错过了一个非常有效的选择,我经常用它。这是我的典型模式它还没有让我失望..。:-)

下面是我使用的基本jQuery模板:

代码语言:javascript
运行
复制
$(function() {
    $.getJSON('/some/page',{foo:bar,bar:foo},function(json) {
        if(json.outcome == 'success') {
            $('body').prepend(json.html);
        } else {
            // Somehow let the user know why it didn't work
            alert(json.error);
        }
    });
});

下面是我使用的基本后端(在我的例子中是PHP)结构:

代码语言:javascript
运行
复制
<?php // Page: '/some/page'

/* Blah Blah Blah... do whatever needs to be done... */

// If everything turns out okay (assuming '$output' is the HTML 
// you want to display...
echo json_encode(array('outcome'=>'success','html'=>$output));

// If something goes wrong... just do:
echo json_encode(array('outcome'=>'error','error'=>'Uh oh... something is broken'));

当然,您希望通过将它们放入某个变量或其他方面来更具体地处理您的错误。但是你应该有个主意。当然,您还可以向json输出添加更多信息。您可以有一些预先制作的HTML和一些其他信息,如‘成功通知’或一个新的类名的一些元素,我不知道.不管什么..。可能性是无限的。

无论如何,我之所以选择这个路径,是因为(根据我的经验)在DOM中添加预先生成的HTML通常更快,而不是在JSON上循环并插入内容,除非它只是一些文本来替换到元素中。但是,我展示的方法是,国际海事组织,这两个世界都是最好的。可以将HTML作为字符串附加到JSON属性之一。

快乐jQuerying :-)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/890004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档