如何正确回显 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
是一个对象而不是字符串。
当我回显这个时 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
是一个对象而不是字符串。