我正在尝试使用数组的值设置表单的某些字段。
我有一个像这样的数组:
Array
{
'elementID1' => Array
{
'id1' => 'some value',
'id2' => 'some value',
'id3' => 'some value',
...
}
'elementID2' => Array
{
'id1' => 'some value',
'id2' => 'some value',
'id3' => 'some value',
...
}
...
}
该数组填充了 Web 服务的响应,我通过表单向该 Web 服务发送了一些参数。填充数组后,我绘制一个表格并迭代该数组。
<table width = "100%" border = "1">
<tr>
<th>Header 1</th>
<th>Header 2</th>
<th>Header 3</th>
<th>View details</th>
</tr>
<?php
foreach($array as $id => $detail)
{
echo "<tr>";
echo "<td>";
if(array_key_exists('id1', $detail))
echo $detail['id1'];
echo "</td>";
echo "<td>";
if(array_key_exists('id2', $detail))
echo $detail['id2'];
echo "</td>";
echo "<td>";
if(array_key_exists('id3', $detail))
echo $detail['id3'];
echo "</td>";
echo "<td>";
echo "<a href = \"javascript:equisYe('" . $id . "')\">View more</a>";
echo "</td>";
echo "</tr>";
}
?>
</table>
现在问题来了,您可以看到有第四列名为“查看详细信息”,该列填充了一个超链接,该超链接以特定行的 elementID 值作为参数调用 JavaScript 函数。
下面我有脚本:
<script>
function equisYe(id)
{
var equis = "<?php echo $array['" + id + "']['IncidentID']; ?>";
alert(equis);
}
</script>
当我单击超链接时没有发生任何事情,我认为问题与引号标点符号内的特殊字符有关。在我的浏览器中,当我检查其中一个超链接时,它会在 de script 标记内显示以下消息:
function equisYe(id)
{
var equis = "<br />
<b>Notice</b>: Undefined index: + id + in <b>
";
alert(equis);
}
这意味着,由于某种原因,字符串没有连接,如果我从 equals var 的 php 标记中删除“p”,如下所示:
var equis = "<?ph echo $array['" + id + "']['IncidentID']; ?>";
然后警报显示如下:
"<?ph echo $array['10']['IncidentID']; ?>"
所以,当它没有 php 标签时它就可以工作。
最佳答案
另一个答案是正确的,但根本没有解释(甚至没有礼貌地解释)。 PHP 的东西在 Javascript 的东西之前运行。不幸的是,你永远无法以这种方式工作。如果是相反的情况,它可能会起作用,但是这不会像你所拥有的那样起作用。
要实现这样的功能,唯一的方法是提前选择 ID 值,并让 PHP 在 Javascript 中进行设置。 Javascript 永远无法仅通过 PHP 在页面提供之前运行以及 Javascript 在页面提供之后运行来设置 PHP 值。
关于javascript - 从 Javascript 函数访问 PHP 数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33291772/