2012-11-07 34 views
0

我目前正在研究一个包含显示其条目的日历的小型Web应用程序。当页面加载时,日历通过PHP生成。AJAX:PHP vs Javascript视图 - Dupliacte查看逻辑?

在同一页上,有一个表单允许编辑条目。 AJAX发送更改命令,然后日历必须以某种方式重新加载。

什么,我想知道目前是这样的:

我有更新通过AJAX日历的两种可能性。

  • 一是重新发送日历的HTML标记,它是否意味着重新加载整个日历或日历条目的元素。
    这可能不是最优的,因为它需要通过AJAX调用发送相当多的(原始)数据。
    另一方面,它只需要调用相同的PHP函数,该函数会再次生成标记,然后返回,然后替换客户端上的DOM元素,因此必需的工作大致是5行代码。
    这是我目前使用的方式,因为它感觉“更容易”。
  • 另一种是发送新日历条目的数据JSON编码,然后通过JavaScript函数将必要的更改转换为现有的标记。
    这也感觉不是最佳的,因为我必须使用两次标记的很多知识:一次在PHP代码中,一次在JS代码中。一旦标记会以任何方式改变,我都可以看到这个冗余代码导致问题。
    它也感觉像是一个更复杂的解决方案,考虑到我必须处理大量的字段(大约10+),它很容易包含4-5个代码。另一方面,由于仅发送内容,所以传输的数据少得多。

哪个更好的解决方案?我错过了第三个(甚至是第四个)选项吗?

回答

1

第二个选项不一定需要在代码中涉及冗余。

您的位置是,它会这样做,因为您在初始页面加载时将日历HTML呈现在PHP中,并且您希望避免在Javascript中重复该逻辑。

避免这种情况的方法是将日历完全呈现为Javascript,并始终将日历数据作为JSON从PHP代码发送。

在初始页面加载时,这意味着PHP程序为日历提供了一组初始数据,然后由JavaScript初始化函数填充(例如,如果您使用的是jQuery,则为$(document).ready())。

此解决方案意味着您的代码在所有情况下都使用基于Javascript的一致呈现。

当然,你的第一个解决方案也意味着一个一致的代码库进行渲染,所以从这个角度来看,这两个选项都很好。所以如果这是标准,那么他们之间很少有选择。很显然,如果你已经有了一个编码选项,那么除了你有一个很好的理由切换到Javascript之外,这是一个明显优于选项二的选项。但是其他一些可能发挥作用的标准可能包括使用相同的JSON对象呈现其他内容的可能性,使用它来填充现有的第三方Javascript日期控件,或将其作为第三方提供的API。对于这些情况,JSON是一个明显的赢家,因为它提供了更多的灵活性。

所以我想这取决于你,什么对你很重要。但我想我要说的重点是这两个选项都可能没有重复的代码。

希望有所帮助。

+0

选择用于渲染*解决方案的2nd * Javascript的一个错误可以在JavaScript禁用的用户没有显示日历的事实中看到。由PHP生成的Calenders HTML代码可能(至少禁用JavaScript)显示。这两种情况都无法实现更新AJAX风格。仍然第一个解决方案可能是更好的后备 – humanityANDpeace

0

我想说这取决于您网站上的流量。如果这个网站的流量很大,后面的选项会减少带宽的数量,这可以在一天中为您节省很多。

如果带宽不是一个担心,那么请使用最简单的解决方案,我相信这是您当前的解决方案。如果你没有很多的PHP函数或布局的控制权,这也可能是最佳的解决方案,例如,如果你只是在工作和CSS。