当我回显此表时:

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控制台显示此错误:


  未捕获的ReferenceError:未定义ADAC
      在HTMLInputElement.onclick


或者,如果十六进制为39E3,则该函数运行,但我在函数39000中得到了该数字,我不知道为什么,但它是正确的,因为在Google中,如果我将39E3转换为小数,我会得到该数字,但我不希望39E3将其自身转换为39000所以我的猜测是,变量$ 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是对象而不是字符串。

09-06 12:59