我有一个遗留的PHP应用程序,它使用少量的Javascript来处理通常与用户界面相关的特定内容。我遇到了一个问题,我还没有找到解决方案,我希望这里的人有一个想法或建议。
这个应用程序为我提供了一个PHP数组,如下所示。数据是从数据库中读取的。我更改数组结构的能力有限。数组可能会变得非常大。
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一样使用键,还是只使用索引?
<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,所以它现在看起来就像这样。正如我所说的,这应该读取数组并更新显示。
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;
}我上上下下地搜索了网络,但一无所获。我发现的示例要么做了完全不同的事情,要么使用了一个很小的数组,这让我怀疑这是否可能。不管怎样,我已经想不出办法了。感谢您提供的任何帮助。
发布于 2017-04-19 05:01:47
您可以使用json_encode()将数组转换为Javascript语法。
<script>
var js_array = <?php echo json_encode($php_array); ?>
</script>然后,您可以在其余的客户端代码中使用js_array变量。
但是,使用AJAX根据需要在数据库中查找数据可能更好,而不是将整个数组转储到脚本中。
https://stackoverflow.com/questions/43482016
复制相似问题