当我回显此表时:
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
是对象而不是字符串。