替代从PHP传递数据到JavaScript?

时间:2015-04-15 20:37:11

标签: javascript php

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

我考虑过只使用所有配置编码JSON元素的内容,这将极大地改善结构和效果,但同时在DOM中存储敏感信息并不理想或任何安全。

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

我考虑过的事情是初始请求信息,将其存储在Cache / localStorage中以及数据的校验和,并包括DOM中最新数据的校验和。因此,在每个页面加载它时,它将比较校验和,如果它们不同(JavaScript具有存储在Cache / localStorage中的过时数据),它将发送另一个请求。

我宁愿不必沿着这条路走下去,而且我想知道你能想到更好的方法。我无法在其他问题中找到任何替代方法/谷歌,所以任何帮助都表示赞赏。

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

答案 1 :(得分:1)

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

为了安全起见,特别是在需要登录时,只有在用户登录后才会返回此文件。否则你只需返回一个空白文件。