gpt4 book ai didi

javascript - 为什么我的 session 值针对特定值发生了变化?

转载 作者:行者123 更新时间:2023-11-30 14:54:45 26 4
gpt4 key购买 nike

有人可以帮助理解为什么我的 session 值会针对特定值 03375 发生变化吗?

我的 MVC Controller 代码:

Session["something"] = "03375";

我的 View js代码:

$(function(){
alert(@Session["something"].ToString());
});

结果:js alerts 1789. 为什么???

它适用于其他值除外。这是一把 fiddle https://dotnetfiddle.net/zLdyO8

最佳答案

这与 asp.net session 无关。如果你在你的页面中这样做

console.log(03375);

你会得到1789

为什么会这样?

因为当浏览器的 javascript 运行时看到一个以 0 前缀开头的数字时,它认为它是该数字的八进制 表示。 事实上 033751789 的八进制等价物。所以你的浏览器基本上是在转换八进制值到它的十进制等效值并给你 1789(浏览器通常将数字解析为十进制表示)

来自 mdn ,

Note that decimal literals can start with a zero (0) followed by another decimal digit, but if every digit after the leading 0 is smaller than 8, the number gets parsed as an octal number.

这意味着,如果你正在尝试

console.log(09375);

它将打印,9375 !!!

要处理您的情况,理想的解决方案是设置正确的类型值。例如,如果您要传递一个数值,只需设置数值而不是带前导零的字符串版本。

Session["something"] = "3375";

甚至更好

Session["something"] = 3375;

然后在客户端,

alert(@Session["something"]);

如果你绝对想保留 0 前缀,同时设置 session 值,但你想在客户端将值作为数字,你可以在字符串中读取它,然后使用 parseInt 将其转为数字类型

var r = '@Session["something"].ToString()';
alert(r); // the string with leading 0
var n = parseInt(r);
alert(n); // the number
alert(typeof(n));

关于javascript - 为什么我的 session 值针对特定值发生了变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47477459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com