Javascript jQuery data()将字符串视为数字时出现问题
我有一个MySQL BIGINT,我正在HTML5数据中存储它。然后我尝试访问该值并通过AJAX调用传递它Javascript jQuery data()将字符串视为数字时出现问题,javascript,jquery,floating-point,Javascript,Jquery,Floating Point,我有一个MySQL BIGINT,我正在HTML5数据中存储它。然后我尝试访问该值并通过AJAX调用传递它 <div data-id="211285677671858177"> 问题在于jQuerydata函数似乎将该值作为浮点而不是字符串检索。因此,将其添加到空白字符串中并没有帮助,因为已经太晚了-它已经被舍入(在本例中为211285677671858180)。我能做些什么来修复此问题?尝试将其键入字符串: id: '' + $(this).data('id').toString
<div data-id="211285677671858177">
问题在于jQuery
data
函数似乎将该值作为浮点而不是字符串检索。因此,将其添加到空白字符串中并没有帮助,因为已经太晚了-它已经被舍入(在本例中为211285677671858180
)。我能做些什么来修复此问题?尝试将其键入字符串:
id: '' + $(this).data('id').toString();
JavaScript中没有“长整数”这样的东西。所有数字都是64位浮点。在IEEE-794浮点表示法中无法准确表示您所在的数字 “修复”此问题的唯一方法是将数字转换为域中可以处理大整数值的字符串。这不是“long int”的情况。实际上,您得到的数字是最接近的可用浮点数表示形式 无论如何,您希望该值作为字符串。引用(我的重点): 每次尝试都会将字符串转换为JavaScript值 (这包括布尔、数字、对象、数组和null)否则 它以字符串的形式保留以字符串形式检索值的属性 在不进行任何转换的情况下,使用attr()方法。
如果希望
data
将数据属性值视为字符串,请尝试将其括在单引号中。我想,这里的问题是,您需要删除引号。我遇到了一个类似的问题,数据id(字母数字)通过使用.data()进行转换,结果最后几个字符被转换为全零。需要进行一些研究才能确定这是.data()的jQuery实现中的一个错误
参考:
对我来说,为了直接获得数据id作为解决方法,我直接使用了.attr(“数据id”),这给了我正确的id。好的。不管怎样,我不希望它是一个数字。我希望它被视为一个字符串,但
data
似乎将其视为一个浮点。有什么想法吗?所有属性值都是字符串。但是,当您使用.data()
API时,jQuery试图提供帮助并将内容转换为数字类型。尝试只获取属性的.attr()
值。@andrewtweber在黑暗中拍摄全场,但使用$(this.attr('data-id');把它当作一根绳子吗?是的,那很管用。有趣的。。。我想知道数据
是不是一个bug?我会把这个问题留一段时间,看看其他人有什么问题say@andrewtweber这不是一个bug,正如其他人提到的那样,jQuery正努力做到主动,并假设您最可能想要的东西。在这种情况下,假设是错误的。好的,谢谢你的解释。我希望有一种方法告诉数据
不要转换它,但我想attr
现在就可以了。我还发现,使用也非常简单,实现起来也很快。
id: '' + $(this).data('id').toString();