【问题标题】:Alternative to passing Data to JavaScript from PHP?从 PHP 向 JavaScript 传递数据的替代方案?
【发布时间】:2015-04-16 11:21:28
【问题描述】:

我有一个相当大的应用程序,我目前正试图找到一种方法来绕过必须通过 DOM 传递来自 PHP(第 3 方 API 等的用户令牌等)的数据。目前我在单个元素上使用data-* 属性并从中解析数据,但它非常混乱。

我考虑过将元素的内容与所有配置一起编码为 JSON,这将大大改善结构和效率,但同时将敏感信息存储在 DOM 中并不理想或安全。

通过 AJAX 获取数据也不那么可行,因为应用程序在任何页面上始终需要此信息 - 因此在允许用户输入或控制之前在每次页面加载时运行 AJAX 请求对用户和向我的服务器添加负载。

我考虑过的事情是对信息进行初始请求,将其与数据校验和一起存储在 Cache/localStorage 中,并将最新数据的校验和包含在 DOM 中。因此,在每次页面加载时,它都会比较校验和,如果它们不同(JavaScript 的缓存/本地存储中存储了过期数据),它将发送另一个请求。

我宁愿不必走这条路,我想知道您是否可以想到任何更好的方法。我在其他问题/Google 中找不到任何替代方法,因此不胜感激。

【问题讨论】:

    标签: javascript php


    【解决方案1】:

    您还可以创建一个 php 文件并将标头设置为 javascript 类型。将此文件作为普通的 javascript 文件请求。 <script src="config.js.php"></script>(考虑到文件名是 config.js.php)您可以构建您的 javascript 代码并简单地动态分配值。

    为了安全,特别是在需要登录的情况下,这个文件只有在用户登录后才能返回。否则,您只需返回一个空白文件。

    【讨论】:

      【解决方案2】:

      您也可以在模板中发出所需的 json 并将其分配给 javascript 全局。

      如果您使用支持继承的模板系统(如 twig),这将特别容易。然后,您可以在应用程序的基本模板中执行以下操作:

      <script>
      MyApp = {};
      MyApp.cfg = {{cfg | tojson | safe}};
      </script>
      

      其中 cfg 是模板上下文中的 php 字典。这些过滤器不是特定于树枝的,但可以为您提供一个想法。

      如果您存储敏感信息并不安全,但它比将信息存储在本地存储中更容易,

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-09
        • 2017-03-10
        • 2012-07-04
        • 1970-01-01
        • 2016-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多