我正在尝试使用数组值设置表单的某些字段。
我有一个这样的数组:
Array
{
'elementID1' => Array
{
'id1' => 'some value',
'id2' => 'some value',
'id3' => 'some value',
...
}
'elementID2' => Array
{
'id1' => 'some value',
'id2' => 'some value',
'id3' => 'some value',
...
}
...
}
数组中充满了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>
现在,问题出现了,因为你可以看到第四列名为View details,这一列填充了一个超链接,调用一个javascript函数,并将特定行的elementID值作为参数。
我的脚本还有一点:
<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);
}
这意味着,由于某种原因,字符串不会连接,如果我删除了&#39; p&#39;来自equis var中的php标签,如下所示:
var equis = "<?ph echo $array['" + id + "']['IncidentID']; ?>";
然后警报显示:
"<?ph echo $array['10']['IncidentID']; ?>"
因此,当它没有php标签时它会起作用。
答案 0 :(得分:1)
另一个答案是正确的,但根本没有解释(甚至是礼貌地)。 PHP的东西在你的Javascript之前运行。不幸的是,你永远不会以这种方式工作。如果是相反的方式,它可能会起作用,但这不会像你拥有的那样起作用。
使这样的工作的唯一方法是提前选择ID值并在PHP中设置PHP。 Javascript永远无法设置PHP值,只需通过PHP运行之前到正在投放的页面,并且在页面投放后运行。
答案 1 :(得分:0)
dude ... javascript在客户端(浏览器)和服务器上的php上执行;你不能这样做
答案 2 :(得分:0)
尝试使用<xsl:variable name='NumPass' select='count(MyClass/MyContainer/MyObject/Pass[normalize-space(text())="true"])' />
代替<? ?>
答案 3 :(得分:0)
每个人都是正确的,因为你不能简单地从Javascript调用PHP函数而不执行某种HTTP请求。
由于您在生成页面时已经在php中拥有“IncidentID”,因此您只需将其写入页面即可。
而不是
echo "<td>";
echo "<a href = \"javascript:equisYe('" . $id . "')\">View more</a>";
echo "</td>";
DO
echo "<td>";
echo "<a href = \"javascript:alert('" . $detail['IncidentID'] . "')\">View more</a>";
echo "</td>";
答案 4 :(得分:0)
您可以使用data属性将$ id传递给js,始终使用DOM。
请检查:https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes
然后在“查看详细信息”中使用单击事件从元素获取数据并触发该功能,这样您就可以使用它了