哪种更好的做法?从Jquery响应中获取HTML

时间:2013-10-26 15:03:09

标签: php jquery ajax json

这只是一个问题,可以找出人们做什么以及如何做到这一点,但

假设用户在列表中添加内容,完成后会运行下面的ajax并更新.user-stream-list

$.ajax({
    url: "user-stream-list.php",
    success: function(data){
        $(".user-stream-list").html(data);
    }
});

user-stream-list.php响应例如是

<li class='feed'><a href='http://www.theverge.com/rss/index.xml' data-fid='13' data-uid='15'><img class='favicon' src='https://www.google.com/s2/favicons?domain=www.theverge.com'><span class='title'>The Verge -  All Posts</span><span class='options'><span class='addcat' data-fid='13'>+</span><span class='delete'>×</span></span></a></li>

在Web开发中这是否可以接受?或者我应该将其作为json传递给它并在之后将其分类为html?

4 个答案:

答案 0 :(得分:6)

做适合您特定问题的方法。好的设计在权衡之间找到妥协。如果您处于紧迫的截止日期,并且您需要一些有用的东西,并且从PHP返回HTML更容易。

也就是说,您正在服务器上以编程方式生成HTML。如果传递JSON,则会有相同的工作,不同之处在于客户端生成HTML。这对您来说更灵活,因为您可以在不同的上下文中生成不同的HTML。或者根本不是HTML。

通过提供重用,设计返回灵活的数据结构松散地耦合应用程序组件:数据结构对于调用者的环境和目标表示仍然是不可知的。随着应用程序的发展,这种灵活性将为您的应用程序提供良好的服务,并且 - 在我看来 - 早期设计此类API的努力是值得的。

答案 1 :(得分:2)

我同意主教的回答,我认为这取决于你的系统的架构设计。例如,如果您想使用js模板系统,创建移动设备系统,将数据提供给其他系统或与您的后端通信的其他内容,那么最好从您的服务器提供json。 然而,即使您选择使用php准备HTML服务器端,这是非常常见且可以像此线程中提到的其他人那样接受,最好将创建数据的实体与创建html代码/模板的实体分开,以便灵活并且在未来拥有两全其美。

答案 2 :(得分:0)

如果我理解正确,您会担心是否应该从服务器传递完整的HTML代码,或者只是简单地传递数据。两种方法都很好。这一切都取决于您的需求和实施。

例如,您可能希望为列表中的某些项添加一些内联样式。您可以在服务器端生成更容易的并发送整个HTML代码。您可能还想添加一些微数据。将这些部分中的每一部分分开作为JSON是不必要的。

另一方面,您可能已经预制了HTML代码,并且只想在其中插入数据。在这种情况下,传递整个标签将浪费带宽。

您还需要考虑其他因素:在服务器端或客户端编译数据会更快,我是否需要节省带宽,还是允许自己发送尽可能长的消息?

一般情况下,请尝试避免两件事:发送大量数据并执行两次相同的工作。

答案 3 :(得分:0)

这个问题的答案可能很广泛,而且非常基于意见,但我会给出2美分。

由于您将问题标记为PHP,我假设您的应用程序主要是基于PHP的服务器端代码。由于您的所有视图都将由PHP生成,因此我会在PHP方面保留所有模板。为什么?可维护性和清晰度。不得不追逐不同的视图生成源是耗时且误导的。恕我直言,最好将所有逻辑保留在一侧/语言中,而客户端JavaScript之类的东西应该用于服务器端语言无法做到的事情(AJAX,转换等)。

这种方法可以生成更智能的(IMO)视图,它也非常清晰,可以很容易地改变你的模板/视图(记住,你应该在考虑其他人的情况下编写代码)。