首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将大型PHP数组传递给Javascript

将大型PHP数组传递给Javascript
EN

Stack Overflow用户
提问于 2017-04-19 04:54:55
回答 1查看 695关注 0票数 0

我有一个遗留的PHP应用程序,它使用少量的Javascript来处理通常与用户界面相关的特定内容。我遇到了一个问题,我还没有找到解决方案,我希望这里的人有一个想法或建议。

这个应用程序为我提供了一个PHP数组,如下所示。数据是从数据库中读取的。我更改数组结构的能力有限。数组可能会变得非常大。

代码语言:javascript
复制
    array (size=19)
      3029 => 
        array (size=10)
          0 => string '3029' (length=4)
          'id' => string '3029' (length=4)
          1 => string 'Week 1' (length=6)
          'name' => string 'Week 1' (length=6)
          2 => string '3029' (length=4)
          'parent' => string '3029' (length=4)
          3 => string '16777216' (length=8)
          'order' => string '16777216' (length=8)
          'level' => int 0
          'code' => 
            array (size=4)
              0 => string '1' (length=1)
              1 => string '0' (length=1)
              2 => string '0' (length=1)
              3 => string '0' (length=1)
      3030 => 
        array (size=10)
          0 => string '3030' (length=4)
          'id' => string '3030' (length=4)
          1 => string 'W1T1' (length=4)
          'name' => string 'W1T1' (length=4)
          2 => string '3029' (length=4)
          'parent' => string '3029' (length=4)
          3 => string '16842752' (length=8)
          'order' => string '16842752' (length=8)
          'level' => int 1
          'code' => 
            array (size=4)
              0 => string '1' (length=1)
              1 => string '1' (length=1)
              2 => string '0' (length=1)
              3 => string '0' (length=1)
And so forth...

Javascript函数由onChange事件触发,如下所示。(如果重要的话,所有JS都在PHP之外的单独文件中。)JS代码需要能够读取PHP数组,执行一些计算,然后更新表单上的其他字段。事实证明,由于这两种语言的客户端/服务器端处理,这比我预期的要困难得多。我考虑过将数组作为参数传递给JS函数,但这听起来不是一个好主意,因为数组可能会很大。指针会很好,但我不知道这是否可能。我还有点担心JS如何/是否可以处理嵌套数组。我没有太多的JS经验。它是像PHP一样使用键,还是只使用索引?

代码语言:javascript
复制
    <select name="parent" class="text" onchange="getNextCode(document.detailFrm, <?php if ($obj->parent) {echo $obj->parent;} else {echo 0;}?>)">
        <option value='<?php echo $obj->id; ?>'><?php echo $AppUI->_('None'); ?></option>
        <?php echo $task_parent_options; ?>
    </select>

我还没有编写JS,所以它现在看起来就像这样。正如我所说的,这应该读取数组并更新显示。

代码语言:javascript
复制
function getNextCode(form, parent) {
  //Read the array
  //Calculate next code values
  form.code0.value = code0;
  form.code1.value = code1;
  form.code2.value = code2;
  form.code3.value = code3;
}

我上上下下地搜索了网络,但一无所获。我发现的示例要么做了完全不同的事情,要么使用了一个很小的数组,这让我怀疑这是否可能。不管怎样,我已经想不出办法了。感谢您提供的任何帮助。

EN

回答 1

Stack Overflow用户

发布于 2017-04-19 05:01:47

您可以使用json_encode()将数组转换为Javascript语法。

代码语言:javascript
复制
<script>
var js_array = <?php echo json_encode($php_array); ?>
</script>

然后,您可以在其余的客户端代码中使用js_array变量。

但是,使用AJAX根据需要在数据库中查找数据可能更好,而不是将整个数组转储到脚本中。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43482016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档