javascript - 从 Javascript 函数访问 PHP 数组元素

标签 javascript php html arrays

我正在尝试使用数组的值设置表单的某些字段。

我有一个像这样的数组:

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/

相关文章:

javascript - 删除数据 jQuery

javascript - 只需更改外部JS文件的代码即可检测div内的iframe是否被加载

php - PHP代码可在PHP5中使用,但不能在4中使用。

html - :not vs :nth-child - which one should I prefer?

php - Notepad++ 中的html标签和jsp、php、asp标签的自动关闭,以及在scriptlet编写的行尾的分号

javascript - Knockout JS 不会更新映射对象

php - 为 php `str_len ` 获得与 jQuery `.val().length()` 相同的结果

php - 禁用 "square bracket to array"表单值名称的解析

php - 使用 PHP 和 TCPDF 从数据库中检索数据(使用 mysql)并将其显示为 .pdf 文件

javascript - 需要碰撞检测的 Javascript 和 Canvas "engine"