可以使用cron来代替在JavaScript中使用硬编码值吗?

时间:2011-04-12 09:47:07

标签: php javascript mysql cron dynamic-forms

通过观察这个小提琴可能最容易理解:

http://jsfiddle.net/TdBdW/1/ - 对缺乏css道歉。

正如您所看到的,对于我动态生成的下拉列表和文本框,我有一大堆硬编码值。我本来希望直接从数据库中提取这些内容,但查询需要很长时间才能实时使用 - 即当用户点击下拉菜单或尝试输入自动完成框时

相反,我想做的是使用cron作业每晚运行相关查询,但问题是如何获取查询结果并将它们放入我的javascript文件中。

任何人都有任何想法如何实现这个?

非常感谢任何帮助。

马丁

3 个答案:

答案 0 :(得分:2)

实现您想要的最佳途径(“cron job创建数据供javascript使用”)是通过JSON进行的。这包括:

  1. 创建一个cron作业,a)获取数据,b)将其写入使用可从Web服务器访问的JSON约定格式化的文件,
  2. 修改您的html以包含由cron作业创建的文件。
  3. 为简单起见,您可以使用类似于以下内容创建javascript文件:

    var agentValues = [
            "excel",
            "msword",
            "ppt",
    ];
    

    您可以使用静态的第一行和最后一行轻松创建它,只需在查询中添加引用的值。然后,您可以像任何其他javascript一样将此文件加载到您的html文档中:

    <script type="text/javascript" src="..."></script>
    

    填充自动填充值时,只需在此数组上使用for循环:

    for (var i = 0; i < agentValues.length; i++) {
        $("<option>" + agentValues[i] + "</option>").appendTo($values);
    }
    

    上述内容是实现目标的最基本版本,您可以对其进行改进,例如:由:

    1. 添加错误检查
    2. 构建您的命名空间,以便您没有很多顶级变量
    3. 将数据值添加到现有的javascript中,而不是单独的文件

答案 1 :(得分:1)

您可以先尝试优化查询吗?如果您运行cron作业,我想您可以将结果写入服务器上的json或xml文件,并使用XHR(也称为AJAX)拉取该文件。

或者,您可以在数据库中设计/创建包含cronned查询结果的表,并从该表中提取数据?

答案 2 :(得分:0)

您可能不希望您的javascript文件是静态的。为什么不以与生成html相同的方式由php脚本动态生成它?如果它更容易你可以在你的html中内联javascript,而不是将它作为一个单独的资产加载。

如果您担心每次都会为标记列表命中数据库,则可以将标记保留在某个全局对象中,该对象会定期更新。