我想用数组的值设置表单的一些字段。
我有一个像这样的数组:
Array
{
'elementID1' => Array
{
'id1' => 'some value',
'id2' => 'some value',
'id3' => 'some value',
...
}
'elementID2' => Array
{
'id1' => 'some value',
'id2' => 'some value',
'id3' => 'some value',
...
}
...
}
数组由一个webservice的响应填充,我用表单向它发送了一些参数。填满数组后,绘制一个表并遍历数组。
<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>
现在,问题来了,正如您所看到的,有一个名为View details的第四列,该列中填充了一个超链接,该超链接以特定行的elementID值作为参数调用javascript函数。
在下面我有一个脚本:
<script>
function equisYe(id)
{
var equis = "<?php echo $array['" + id + "']['IncidentID']; ?>";
alert(equis);
}
</script>
当我点击超链接没有发生任何事情,我认为问题与引号内的特殊字符有关。在我的浏览器中,当我检查其中一个超链接时,它在de scripts标记中显示以下消息:
function equisYe(id)
{
var equis = "<br />
<b>Notice</b>: Undefined index: + id + in <b>
";
alert(equis);
}
这意味着,由于某种原因,字符串没有连接,如果我从equis变量中的php标记中删除'p',像这样:
var equis = "<?ph echo $array['" + id + "']['IncidentID']; ?>";
然后警报显示如下:
"<?ph echo $array['10']['IncidentID']; ?>"
所以,当它没有php标签时,它可以工作
另一个答案是正确的,但根本没有解释(甚至没有礼貌地解释)。PHP在Javascript之前运行。不幸的是,你永远无法做到这一点。如果是另一种方式,它可能会工作,但这不会像你这样工作。
要使这种工作的唯一方法是提前选择ID值,并让PHP在Javascript中设置一些东西。Javascript永远不能仅仅因为PHP在之前运行而Javascript在之后运行而设置PHP值。
dude…Javascript在客户端(浏览器)执行,PHP在服务器端执行;你不能那样做
尝试使用<? ?>
代替<?php ?>
每个人都是正确的,因为你不能简单地从Javascript调用PHP函数而不执行某种HTTP请求。
由于在生成页面时php中已经有了"IncidentID",因此可以简单地将其写入页面。
不是echo "<td>";
echo "<a href = '"javascript:equisYe('" . $id . "')'">View more</a>";
echo "</td>";
echo "<td>";
echo "<a href = '"javascript:alert('" . $detail['IncidentID'] . "')'">View more</a>";
echo "</td>";
你可以使用data属性来传递$id给js,总是使用DOM。
检查:https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes
然后在"查看详细信息"中使用单击事件要从元素中获取数据并触发函数,可以使用