2011-03-13 52 views
2

当添加到页面我要么使用location.reload(true);或执行大量的jQuery的选项将DIV动态添加到页面的注释。我已经有了解释页面本身的注释的代码,当它加载时必须在JQuery中复制它,这不仅增加了代码重复和混淆,而且还意味着当我想要更改注释的解析方式时,我必须更改它事物的PHP方面和JQuery方面。这是值得的,或者我应该刷新页面?刷新页面或做一个荒谬的数量的JQuery?

+3

我没有看到这是一个完整的jQuery代码量。 – 2011-03-13 02:51:08

+0

啊,是的,我道歉;可笑的是错误的选择的话。我对JQuery仍然很陌生,它很可能需要我花一些时间来实现它,并且在我的其他代码中,它到目前为止将是该项目的一大部分。 – 2011-03-13 03:28:27

回答

2

我的做法是将评论提交到服务器,并获得与您使用显示评论所包含HTML的XML响应。使用XML响应,您可以使用jQuery将新评论追加到线程中。

可以使用PHP生成HTML部分,这与重新加载页面时的方式相同。

这样,你只能修改PHP代码。

+0

这是我正在寻找的答案。谢谢。 – 2011-03-13 03:15:37

0

这一切都依赖于差异是否会出现明显足以使成本给用户,不这样做的JS,会比增益你会从它更高。

也就是说,如果你关心你的用户体验,你做你自己的方便尽可能多的;)

最终,只有你能回答这个问题,因为这个人,它需要是值得的, 是你。

将用户偏好使用JavaScript和更新页面没有页面加载:最有可能是的。

0

我会说这取决于,要么你做与jQuery/JavaScript的一切,否则你重装上的变化。选择一条路径,并构建一切工作。 我个人更喜欢使用jquery,所以不仅我会添加jquery的帖子,我会加载与jquery的所有帖子。

3

这是一个“讨论”的问题,所以虽然我会出声想和你在一起,我停止短,宣布“更好”的方式来解决这个问题。

  1. 客户端/服务器耦合。 您提到您担心客户端/服务器之间的耦合;那就是jQuery解决方案,如果你想改变一些关于你的评论的话,你将不得不改变客户端和服务器逻辑。这在可维护性方面很重要。如果您预见到处理注释的方式会有重大的重新设计,您希望将这些问题分开,并重新加载页面。

  2. UI流量思考。 是否重新加载分页符您的用户界面的流程?如果您正在托管一个有状态的Web应用程序,那么这是一个重要的考虑因素。如果您正在托管标准博客/ CMS类型的应用程序,则重新加载页面可能不是什么大问题。

  3. 的努力涉案金额。 写这个jQuery例程需要多少时间?一小时?一天?看起来简单地重新加载页面是一个快速,简单的1.0版本的解决方案;您可以随时进行改进。还要考虑决策的后果,以及未来需要做出什么样的改变。

然而,这次讨论的有效性只与您的设计一样有效。退一步看看你的设计往往很有启发意义。为什么这个问题甚至存在?在它发生之前,您是否可以改变设计以解决这个问题?嗯...

-tjw

+0

我很欣赏你提出的想法,并且已经考虑到了他们。不过,我最近几次的陈述让我有点困惑。会不会总是需要两个单独的代码来源这种事情?一个用于动态添加评论,另一个用于加载页面加载时的所有评论。 – 2011-03-13 03:24:17

+0

似乎你正试图避免最好的解决方案(jQuery),因为你还不是专家。俗话说,当你唯一拥有的工具是锤子时,所有东西看起来都像钉子。换句话说,确保你在工作中使用最好的工具,而不仅仅是你最熟悉的工具。恰巧我强烈反对@marcos接受的解决方案;是的,它会工作,但其他许多事情也一样。他的解决方案完全违反了良好的MVC风格设计,而且通常只是糟糕的建议。 – 2011-03-13 03:34:05

0

这里有几种不同的选择,这取决于你需要什么。一种选择是做一个完整的帖子,有时候是正确的。在几乎所有情况下,它都应该是javascript不可用的情况下的默认设置(例如屏幕阅读器)。为此,您可以添加(渐进式增强)要么执行AJAX请求返回HTML的能力,即回发到生成部分页面的方法并简单地替换它。如果您在最初生成时设计页面以合并此部分视图,则甚至不必重复代码 - 只需通过AJAX调用时以不同方式使用它即可。或者,您可以执行AJAX请求返回数据或完全在客户端上操作客户端上的数据以更新视图,并只将所有更新的数据推送回服务器。您选择的是完全取决于应用程序和您的偏好。根据你的文章,我建议看一下MVC框架,它允许你生成部分视图,因为它似乎解决了你最大的担忧。它将页面上的JavaScript数量保持得较小,并专注于简单地发出请求并更新页面的位,同时将格式和数据解析留在服务器上 - 所有这些都是通过AJAX在必要时访问的。

0

好像有两个问题:

  1. 你应该费心实际使用Ajax这个?
  2. 如果您使用Ajax,是否有避免重复代码的方法?

问题1:我相信这是不是专门的编程问题:是否Ajax是必要的取决于你的应用程序和用户的需求(或客户端或经理或产品manager--可能不是你) 。更新是否重要?那么没有 - 它可以更平滑些,而且你甚至可以很好地制作它。好消息是:你有一个“工作版本”,现在你知道做Ajax会有多少工作 - 你可以得到一个更明智的估计给那些支付$的人。

问题2:我的原则是不即使你在PHP,一旦在Javascript编写一次相同的代码twice--。这是你感到沮丧的。这是我在推理时的推理:

您有评论,您需要将其转换为HTML。您可以在两个位置之一执行此操作:服务器或客户端(Javascript) - 而不是两者。因此...

  • 如果实现渲染服务器上的评论,你应该通过使用Ajax架构进行此操作。因此,Ajax响应不应该返回XML或JSON,而应该返回和可以简单地插入到DOM中的HTML段。您可以在初始页面显示和Ajax响应之间在后端共享相同的渲染代码。

  • 如果您想要在Javascript中实现呈现,请在页面首次呈现时使用相同的呈现代码,就像在响应Ajax请求时一样。这对某些人来说有点不直观 - 但是真的是避免重复的秘密。为评论选择标准的“结构化格式” - XML或JSON。编写一个知道如何将其呈现给页面的函数。然后,您可以使用相同的代码来处理Ajax业务。

您选择哪种路径取决于很多因素。如果你有一个公共网站并且关心搜索引擎搜索到的评论,那么技巧1会更容易一些。如果你不那么关心它,并且预计会有很多动态的Javascript行为,那么后面的选项会更好地为你服务。