提问人:Gaspar Catalan 提问时间:5/12/2017 更新时间:5/12/2017 访问量:538
如何正确回显 onclick='function($var)'
how to properly echo onclick='function($var)'
问:
当我呼应这张表时:
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>
当按钮包含数字时,一切正常,例如 1521 或 00254,但是当它具有十六进制数字时,它将无法工作或以奇怪的方式运行,例如在 ADAC 上
Chrome 控制台显示以下错误:$row['IdOrder']
未捕获的 ReferenceError:未定义 ADAC 在 HTMLInputElement.onclick
或者,如果十六进制是 39E3,则函数运行,但我在函数 39000 中得到这个数字,我不知道为什么,但这是正确的,因为在谷歌中,如果我将 39E3 放在十进制中,我会得到这个数字,但我不希望 39E3 将自己转换为 39000,所以我的猜测是变量 $row['IdOrder'] 如果它以数字或字母开头,则处理方式不同, 我希望始终被视为文本,以避免这种奇怪的转换,如果可能的话,或者也许,这样做
我必须走另一条路吗?$row['IdOrder']
答:
0赞
inarilo
5/12/2017
#1
取代
{$row['IdOrder']}
跟
\"{$row['IdOrder']}\"
使其成为字符串。
评论
0赞
billyonecan
5/12/2017
@DontVoteMeDown吧?我们的评论,这个答案和你的答案都是一样的吗?他们怎么是错误的解决方案?
0赞
inarilo
5/12/2017
我想知道为什么投票是匿名的。数据是明显存储的,如果用户离开,您将失去或获得从他们的投票中获得或失去的积分。
0赞
billyonecan
5/12/2017
哦对不起,我没有注意到另一个是不正确的:|
2赞
DontVoteMeDown
5/12/2017
#2
如果 ur 不是纯数字值,则必须用引号将其括起来,以成为字符串:IdOrder
"<input type='submit' name='ID' value='VER' onclick='showOrder(\"{$row['IdOrder']}\")'>"
它应该打印如下内容:
<input type='submit' name='ID' value='VER' onclick='showOrder("myId")'>
因此,编译器不会尝试猜测这是一个对象而不是字符串。ADAC
评论
{$row["IdOrder"]}
$row['IdOrder']