0

我目前正在开发一个小型 Web 应用程序,其中包括一个显示其条目的日历。当页面被加载时,日历会通过 PHP 生成。

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

我目前想知道的是以下几点:

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

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

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

4

2 回答 2

1

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

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

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

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

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

当然,您的第一个解决方案也意味着执行渲染的代码库一致,因此从这个角度来看,这两个选项都可以正常工作。因此,如果这是标准,那么它们之间就没有什么可挑剔的了。显然,如果您已经编写了选项一,那么这显然是选项二的赢家,除非您有充分的理由切换到 Javascript。但其他可能发挥作用的标准可能包括使用相同的 JSON 对象呈现其他内容的可能性,使用它来填充现有的第三方 Javascript 日期控件,或者将其作为 API 提供给第三方。对于这些情况,JSON 无疑是赢家,因为它提供了更大的灵活性。

所以我想这取决于你,什么对你来说很重要。但我想我要说的主要观点是,这两种选择都可以在不重复代码的情况下进行。

希望有帮助。

于 2012-11-07T18:15:36.223 回答
0

我会说这取决于您网站上的流量。如果该站点的流量很大,则后一种选择将最大程度地减少带宽量,这可以在一天内为您节省很多。

如果带宽不是问题,那么选择最简单的解决方案,我认为这是您当前的解决方案。如果您对 php 函数或布局没有太多控制权,这也可能是最佳解决方案,如果您只使用 css 和 js 工作就是这种情况。

于 2012-11-07T18:00:02.330 回答