如何正确回显 onclick='function($var)'

how to properly echo onclick='function($var)'

当我回显这个时 table :

echo "<table class='aTable'  border='1'>
<tr>
<th>ID</th>
<th>Nombre</th>
<th>Apellido</th>
<th>Telefono</th>
<th>Fecha</th>
<th>Ver Orden</th>
</tr>";

while($row = $gsent->fetch(PDO::FETCH_ASSOC))
{
echo "<tr>";
echo "<td>" . $row['IdOrder'] . "</td>";
echo "<td>" . $row['Name'] . "</td>";
echo "<td>" . $row['Apellido'] . "</td>";
echo "<td>" . $row['Phone'] . "</td>";
echo "<td>" . $row['TimeStamp'] . "</td>";
echo "<td>" ."<input type='submit' name='ID' value='VER' onclick='showOrder({$row['IdOrder']})'>"."</td>";
echo "</tr>";
}
echo "</table>";

我希望最后一列显示触发 Javascript 函数的按钮

    <script>
        function showOrder(IdOrder){
            jQuery('#list-data').val(IdOrder);
            document.getElementById("formOrder").submit();
            console.log('PHP:  ' + IdOrder );

            var delayMillis = 500;
            setTimeout(function() {
              window.location.href = 'ask.php';
               }, delayMillis);
}
</script>

当按钮 $row['IdOrder'] 包含一个数字时一切正常,例如 1521 或 00254 但当它有一个十六进制数时它不会工作或以奇怪的方式运行,例如在 ADAC 上 chrome 控制台显示此错误:

Uncaught ReferenceError: ADAC is not defined at HTMLInputElement.onclick

或者如果十六进制是 39E3 函数运行但是我在函数 39000 中得到这个数字我不知道为什么但是是正确的因为在 google 如果我把 39E3 变成十进制我得到那个数字但是我不希望 39E3 将其自身转换为 39000,所以我的猜测是变量 $row['IdOrder'] 被视为不同,如果它以数字或字母开头,我希望 $row['IdOrder'] 总是被对待像文本一样避免这种奇怪的转换,如果可能的话,做 我必须走另一条路吗?

替换

{$row['IdOrder']}

\"{$row['IdOrder']}\"

使其成为字符串。

如果你的 IdOrder 不是纯数字值,你必须用引号将它括起来,变成一个字符串:

"<input type='submit' name='ID' value='VER' onclick='showOrder(\"{$row['IdOrder']}\")'>"

它应该打印如下内容:

<input type='submit' name='ID' value='VER' onclick='showOrder("myId")'>

所以编译器不会尝试猜测 ADAC 是一个对象而不是字符串。