【问题标题】:How to access a PHP array from JS "in another file"?如何从“另一个文件”中的 JS 访问 PHP 数组?
【发布时间】:2014-08-09 23:07:49
【问题描述】:

我有seen this answer(还有其他几个),它提供了一种可以理解的访问 PHP 数组的方式。但是在示例中,PHP 和 JavaScript 在同一个文件中。

但是,由于某些原因,我无法在我的 PHP 文件中编写 Javascript,而我宁愿做的是调用另一个文件中存在的 JS。所以我需要从 JS 文件中的 PHP 访问一个数组。我该怎么做?

我更喜欢没有 AJAX(如果可能),因为我还没有开始学习 AJAX。

【问题讨论】:

  • 在我可以尝试之前,我正在寻找一种方法。
  • @Boax 为什么要删除我的格式?
  • 我删除了格式,因为粗体文本被认为是整个段落的顶部。它的写作方式,几乎是粗鲁的。我敢肯定你不是故意的,但这就是它通常的意思。
  • @Zarah 我和你没有争吵。如果您想了解如何改进您的问题,请阅读常见问题解答并从其他人的问题中举例学习。当这完全是技术问题时,您的评论使这变得个人化。
  • (旁白:Zarah,我未确诊的强迫症让我注意到你的很多问题都以粗体显示整个段落,并且粗体/斜体经常混合在一起以双重强调。矛盾的是,这不幸的是,通常最终会使文本的可读性降低!如果您想对此有独立的意见,我希望网络上有可用的样式指南;但我仍然认为它不是理想的格式,并且随着时间的推移,它只会创建编辑工作。请记住,问题是为后代而不仅仅是为海报)。

标签: javascript php arrays ajax


【解决方案1】:

您可以使用 JSONP 方法:

让您的 PHP 文件输出包装在函数调用中的数据 - 如下所示:

callback(
  ['your', 'data', 'here']
);

要使用 PHP 变量执行此操作,您可以这样做:

callback(<?php echo json_encode($data) ?>);

然后在您的 JavaScript 文件中执行以下操作:

function callback(data) {
  alert( data.join(' ') ); // will alert 'your data here'
}

在您的 HTML 文件中只包含上面的 JS 文件,然后包含另一个指向您的 php 文件的脚本标记:

<script src="/path/to/local.js"></script>
<script src="http://yourserver.com/path/to/server.php"></script>

浏览器将抓取第一个文件,并评估函数声明。然后它会抓取第二个文件,并看到它是一个函数调用,并立即以数据作为参数执行你的函数。

【讨论】:

  • 我已在建议的编辑中添加,希望没问题。小问题,这不只是一种 JSON 方法,而不是 JSONP 吗?
  • 我了解JS 部分。但我不明白callback( ['your', 'data', 'here'] ); 部分。 [...] 构造是什么?我应该阅读哪些内容才能理解这一点?
  • 其次,我无法在 HTML 中添加那些 &lt;script&gt; 标记,因为我无法向 &lt;head&gt; 添加任何内容,也无法在任何地方添加任何 &lt;script&gt; 标记。我可以使用 API 函数从外部文件加载 JS 函数。
  • callback([...]) 只是从您的 PHP 脚本输出的 javascript。如果您希望它不必在 HEAD 中,您可以在 HTML 中的任何位置添加脚本标签。
  • [] 语法只是一个 JavaScript 数组字面量。
【解决方案2】:

一个快速而肮脏的解决方案是让你的 JavaScript 文件成为 PHP 文件,并在包含脚本时传递你需要的所有变量:

<script type="text/javascript" language="javascript" src="./script.php?var=<?php print(json_encode($var)); ?>"></script>

在 JavaScript 文件中,您可以像这样使用 PHP 变量:

var a=JSON.parse(<?php print($_REQUEST['var']); ?>);

【讨论】:

  • 次要注意:JSON 类不是 jQuery 的一部分,而不仅仅是 JavaScript?
  • 据我所知,所有现代主流浏览器都默认包含 JSON。无论如何,对于跨浏览器支持,我会手动包含 JSON 类
  • 哈,you're quite right - 我不知道!谢谢。
猜你喜欢
  • 2022-01-22
  • 2020-08-25
  • 2019-12-24
  • 2014-01-12
  • 2015-07-13
  • 1970-01-01
  • 2011-10-06
  • 1970-01-01
  • 2013-06-09
相关资源
最近更新 更多