javascript - 客户端中的 JSON 与 Rails 服务器返回的 JSON 不同
问题描述
我正在对此控制器方法进行 AJAX 调用:
def search_posts
keyword = params[:keyword]
results = @client.query("SELECT *
FROM posts
WHERE keyword = '#{keyword}'")
posts = []
results.each do |row|
posts << {
media_id: row["media_id"],
media_type: row["media_type"],
caption: row["caption"]
}
end
@client.close
render json: posts
end
我的 JavaScript 看起来像这样:
$.ajax({
url: '/search_posts',
type: "get",
data: {
keyword: keyword
},
success: function(res) {
console.log(res);
}
});
但是,当我 console.log 返回的 JSON 时,一些 media_id 比实际值小一。例如,应该17924518156307537
在浏览器中记录的 media_id 为17924518156307536
.
我在该行之前已经有了哈希值,并且puts
media_ids在那一点上是正确的。非常奇怪的是,它只发生在一些 media_id 上,而不是全部。posts
render json:
解决方案
终于弄明白了:JavaScript 最多只支持 53 位整数,并且一些 media_id 比这更大。通过在将 media_ids 发送到客户端之前将其转换为 Ruby 中的字符串来解决此问题。
推荐阅读
- javascript - 点击事件绑定的奇怪行为;事件未触发
- c++ - 从文件夹中多次读取
- vba - 当用户退出工作簿而不保存它时,有没有办法将其重置为原始屏幕尺寸?
- .net-core - 发布 PowershellCore 二进制模块
- bash - 通过失败的预提交挂钩保留提交的文件
- javascript - 我可以传递多个路径位置 webpack 排除模块路径吗?
- .net - 如何在构建时正确动态更改 NuGet PackageId 和依赖 PackageId?
- c++ - 如何获取返回的向量引用?
- angular6 - 在我的 html (angular6) 中调用 ngFor 内的方法
- html - 全高引导网格 - 带有嵌套溢出-y:滚动