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

时间:2017-05-12 13:55:16

标签: javascript php jquery echo quotes

当我回复此表时:

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 console出现此错误:

  

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

或者如果十六进制是39E3,该函数运行但我在函数39000中得到这个数字,我不知道为什么但是是正确的,因为在谷歌如果我把39E3放到十进制我得到那个数字但我不希望39E3转换本身为39000所以我的猜测是变量$ row ['IdOrder']如果它的数字或字母开头处于不同状态,我希望$row['IdOrder']始终被视为文本以避免这种奇怪的转换如果它可能或可能,做 我还要走另一条路?

1 个答案:

答案 0 :(得分:2)

如果您的IdOrder不是仅限数字的值,则必须用引号将其换行,以成为字符串:

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

它应该打印如下:

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

因此编译器不会试图猜测ADAC是一个对象而不是一个字符串。