【问题标题】:Most efficient way of passing data from php to javascript - hidden form field or json_encode [closed]将数据从 php 传递到 javascript 的最有效方式 - 隐藏表单字段或 json_encode [关闭]
【发布时间】:2026-01-08 22:40:02
【问题描述】:

所以我的特殊问题如下 - 我有一个 PHP 页面,它遍历坐标列表并将它们显示在我的页面上。

除此之外,我还想在地图上显示它们。

我想出了两种方法,这两种方法都有效 - 我很好奇哪种方法最好,为什么?

我的理解是,通过将我的 javascript 放在下面,我的 javascript 在我的页面加载之前不会执行。正是由于这个原因,这两种方法都有效。

$(document).ready(function() 
{

});

第一个是隐藏的表单域。我可以传递我的经度和纬度,并使用 jQuery 在我的 javascript 文件中获取它们。

第二种是简单的使用

<script type='text/javascript'>
    var myarray = <?php echo JSON_encode($array); ?>;

</script>

在我的 PHP 脚本中,然后以类似的方式在我的 Javascript 文件中访问/循环它,我在我的 PHP 文件中循环它。

    for (var i=0, tot=myarray.length; i < tot; i++) 
{//plot points}

谢谢

【问题讨论】:

  • 看起来它主要取决于序列化/反序列化函数的效率差异。您的隐藏表单字段解决方案也是 JSON 吗?如果是这样......它是如何反序列化的? ...此外,我认为您还为我们提供了两个 非常简单 选项,这些选项很容易进行基准测试。 (让我们知道您的基准测试揭示了什么!)
  • 您还可以对仅提供 JSON 值的端点进行异步调用,以防列表很长。这将让用户查看您漂亮的地图加载,而不是等待页面加载

标签: php javascript jquery parameter-passing


【解决方案1】:

考虑以下情况:如果您使用选项 2(在服务器上循环遍历它)并且同时有 200 个请求,那么您将让每个请求在服务器中执行此循环。现在,当您对数组进行 JSON 编码并将其提供给客户端时,您在服务器中完成了它,并让不同的浏览器(客户端)负责其余的工作。现在,当您必须将相同数量 (200) 序列化为 json 时,情况会发生变化。所以这是速度和性能的问题:哪个更快?哪个性能更好JSON_encodefor 循环并使用echo() 将所有内容写入服务器?答案将根据对象的大小而变化。所以无论如何,继续测试哪个更快,一个简单的benchmark of your scripts 就足够了。

【讨论】:

    【解决方案2】:

    我肯定会使用 JavaScript 数组。

    原因:

    (1) 表单字段用于发布到服务器,而您没有这样做。那么,为什么在不需要时将隐藏的输入元素添加到 DOM 中呢?

    (2) 使用 JavaScript 数组中的值会更容易。遍历它们更容易,它们不必是字符串值。当您获取隐藏输入元素的值时,它是一个字符串。然后,如果它确实是其他类型,则必须将其解析为另一种类型。 JavaScript 值甚至可以是嵌套对象。

    我不会担心性能基准。不会有任何显着差异。易于编码更重要。

    【讨论】: