使用jQuery向PHP传递数字时出现舍入问题的原因咨询
大数字ID传递被舍入的原因及修复方案
问题原因
JavaScript的Number类型采用双精度浮点数标准,能精确表示的最大整数是2^53(即9007199254740992)。你的ID值12345678909728062已经超出这个范围,当PHP直接输出数字到JavaScript代码中时,JS会将其解析为Number类型,超出精度的部分会被自动舍入,导致最后两位丢失准确性。
修复方案
把ID以字符串形式传递,避免JS将其解析为超出精度的数字。修改你的JavaScript代码,给PHP输出的ID值加上引号:
$(document).ready(function() { $("button").click(function() { $(".r_div").load("php/items/purchase.php", { user_id: "<?php echo $id; ?>", // 添加引号将ID转为字符串 fired_button: $(this).val() }); }); });
这样传递到purchase.php后,通过$_POST['user_id']获取到的是完整的字符串值,不会出现舍入问题。如果PHP端需要将其作为整数处理,只要你的PHP运行在64位环境下,int类型可以直接容纳这个大数字;如果是32位环境,建议保持字符串格式处理,避免溢出。
内容的提问来源于stack exchange,提问作者William Bergman
相关产品推荐
相关产品推荐

