当添加到页面我要么使用location.reload(true);
或执行大量的jQuery的选项将DIV动态添加到页面的注释。我已经有了解释页面本身的注释的代码,当它加载时必须在JQuery中复制它,这不仅增加了代码重复和混淆,而且还意味着当我想要更改注释的解析方式时,我必须更改它事物的PHP方面和JQuery方面。这是值得的,或者我应该刷新页面?刷新页面或做一个荒谬的数量的JQuery?
回答
我的做法是将评论提交到服务器,并获得与您使用显示评论所包含HTML的XML响应。使用XML响应,您可以使用jQuery将新评论追加到线程中。
可以使用PHP生成HTML部分,这与重新加载页面时的方式相同。
这样,你只能修改PHP代码。
这是我正在寻找的答案。谢谢。 – 2011-03-13 03:15:37
这一切都依赖于差异是否会出现明显足以使成本给用户,不这样做的JS,会比增益你会从它更高。
也就是说,如果你关心你的用户体验,你做你自己的方便尽可能多的;)
最终,只有你能回答这个问题,因为这个人,它需要是值得的, 是你。
将用户偏好使用JavaScript和更新页面没有页面加载:最有可能是的。
我会说这取决于,要么你做与jQuery/JavaScript的一切,否则你重装上的变化。选择一条路径,并构建一切工作。 我个人更喜欢使用jquery,所以不仅我会添加jquery的帖子,我会加载与jquery的所有帖子。
这是一个“讨论”的问题,所以虽然我会出声想和你在一起,我停止短,宣布“更好”的方式来解决这个问题。
客户端/服务器耦合。 您提到您担心客户端/服务器之间的耦合;那就是jQuery解决方案,如果你想改变一些关于你的评论的话,你将不得不改变客户端和服务器逻辑。这在可维护性方面很重要。如果您预见到处理注释的方式会有重大的重新设计,您希望将这些问题分开,并重新加载页面。
UI流量思考。 是否重新加载分页符您的用户界面的流程?如果您正在托管一个有状态的Web应用程序,那么这是一个重要的考虑因素。如果您正在托管标准博客/ CMS类型的应用程序,则重新加载页面可能不是什么大问题。
的努力涉案金额。 写这个jQuery例程需要多少时间?一小时?一天?看起来简单地重新加载页面是一个快速,简单的1.0版本的解决方案;您可以随时进行改进。还要考虑决策的后果,以及未来需要做出什么样的改变。
然而,这次讨论的有效性只与您的设计一样有效。退一步看看你的设计往往很有启发意义。为什么这个问题甚至存在?在它发生之前,您是否可以改变设计以解决这个问题?嗯...
-tjw
我很欣赏你提出的想法,并且已经考虑到了他们。不过,我最近几次的陈述让我有点困惑。会不会总是需要两个单独的代码来源这种事情?一个用于动态添加评论,另一个用于加载页面加载时的所有评论。 – 2011-03-13 03:24:17
似乎你正试图避免最好的解决方案(jQuery),因为你还不是专家。俗话说,当你唯一拥有的工具是锤子时,所有东西看起来都像钉子。换句话说,确保你在工作中使用最好的工具,而不仅仅是你最熟悉的工具。恰巧我强烈反对@marcos接受的解决方案;是的,它会工作,但其他许多事情也一样。他的解决方案完全违反了良好的MVC风格设计,而且通常只是糟糕的建议。 – 2011-03-13 03:34:05
这里有几种不同的选择,这取决于你需要什么。一种选择是做一个完整的帖子,有时候是正确的。在几乎所有情况下,它都应该是javascript不可用的情况下的默认设置(例如屏幕阅读器)。为此,您可以添加(渐进式增强)要么执行AJAX请求返回HTML的能力,即回发到生成部分页面的方法并简单地替换它。如果您在最初生成时设计页面以合并此部分视图,则甚至不必重复代码 - 只需通过AJAX调用时以不同方式使用它即可。或者,您可以执行AJAX请求返回数据或完全在客户端上操作客户端上的数据以更新视图,并只将所有更新的数据推送回服务器。您选择的是完全取决于应用程序和您的偏好。根据你的文章,我建议看一下MVC框架,它允许你生成部分视图,因为它似乎解决了你最大的担忧。它将页面上的JavaScript数量保持得较小,并专注于简单地发出请求并更新页面的位,同时将格式和数据解析留在服务器上 - 所有这些都是通过AJAX在必要时访问的。
好像有两个问题:
- 你应该费心实际使用Ajax这个?
- 如果您使用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行为,那么后面的选项会更好地为你服务。
- 1. 荒谬功能的反转
- 2. 为什么distanceFromLocation:方法返回一个荒谬的数字
- 3. 封装变得荒谬吗?
- 4. ReadInt()返回荒谬值
- 5. jQuery Mobile的页面刷新
- 6. JQuery的页面刷新
- 7. JQuery页面刷新
- 8. 荒谬的价值主(int argc,char ** argv)
- 9. 如何处理荒谬的评论?
- 10. vector push_back显示荒谬的结果
- 11. iPhone荒谬的内存泄漏
- 12. Asynctask采取荒谬的时间
- 13. NSData的荒谬长度错误
- 14. 你给一个方法最荒谬的名字是什么?
- 15. 刷新一个WPF页面
- 16. 传递一个变量从jQuery到PHP与页面刷新
- 17. 页面刷新/刷新在jQuery Mobile的每个页面上执行$(document).ready()
- 18. 为什么FileManager.enumerator使用荒谬的内存量?
- 19. 我该如何做这个荒谬的SQL多重连接语句?
- 20. jQuery的数据表刷新不刷新页面
- 21. 使用jQuery刷新页面
- 22. 刷新jQuery Mobile页面
- 23. Jquery .load()和页面刷新
- 24. jQuery POST刷新页面
- 25. 关于多个类的Visual Studio中的荒谬错误
- 26. 使用jQuery做一个onClick div刷新
- 27. System.reactive跨线程操作荒谬
- 28. Heisenbug - > NSInvalidArgumentException:能力是荒谬
- 29. T-SQL DateDiff返回荒谬结果
- 30. Java/Swing FEST测试失败荒谬
我没有看到这是一个完整的jQuery代码量。 – 2011-03-13 02:51:08
啊,是的,我道歉;可笑的是错误的选择的话。我对JQuery仍然很陌生,它很可能需要我花一些时间来实现它,并且在我的其他代码中,它到目前为止将是该项目的一大部分。 – 2011-03-13 03:28:27