【问题标题】:Javascript turns my php var 0000001000 to 512Javascript 将我的 php var 0000001000 变为 512
【发布时间】:2013-01-15 16:42:29
【问题描述】:
<a href='javascript:void(0)' onclick='show($ID);'>ID</a>

我的 $ID 是 0000001000。

我的 show() 函数得到的是 512 而不是 0000001000

我尝试使用 String() 和 .toString() 将 $ID 转换为字符串,但我仍然执行 alert() 它返回 512。

我读过一些关于八进制模式的东西。我该如何预防或纠正这种情况?

我希望我的函数读取 0000001000

【问题讨论】:

  • 向我们展示show的代码。
  • 您必须回显 php var,否则它会被视为字符串 '$ID'。 show(&lt;?php echo $ID; ?&gt;);

标签: javascript string int


【解决方案1】:

你应该把它作为一个字符串传递:

echo "<a href='javascript:void(0)' onclick='show(\"" . $ID . "\");'>ID</a>";

否则它会自动从八进制转换为十进制表示法为oct(1000) === dec(512)

【讨论】:

  • 这会将字符串文字"$ID" 传递给show,可能不是您的意思:P
  • @jbabey 是的,现在应该更具描述性:)
  • @jbabey 为什么会这样?你什么时候不能在字符串中回显 PHP 变量了?
  • @jbabey 没关系,他们不需要连接字符串。你不能这样做:echo "&lt;a href='javascript:void(0)' onclick='show(\"$ID\");'&gt;ID&lt;/a&gt;"; 吗?还是我错了?我想我不知道原始代码是什么,但我认为它可能是这样的。 OP 不应该唯一需要的是 $ID 之前和之后的转义引号吗?
【解决方案2】:

当您将 0000001000 传递给您的 show 函数时,它似乎被解释为八进制(归功于 @Oscar Lopaz)(512)。尝试将其作为字符串传递:

<a href="javascript:void(0)" onclick="show('" + $ID + "');">ID</a>

【讨论】:

    【解决方案3】:

    在 Javascript 中,以零开头的数字被视为八进制(不是二进制!)。八进制的 1000 == 十进制的 512。您应该将值作为字符串处理以避免此类问题。

    【讨论】:

    • 八进制的不错。我没有费心去想它
    猜你喜欢
    • 2023-03-25
    • 2013-12-15
    • 1970-01-01
    • 2011-08-08
    • 2016-11-23
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多