首页 > 解决方案 > 客户端中的 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.

我在该行之前已经有了哈希值,并且putsmedia_ids在那一点上是正确的。非常奇怪的是,它只发生在一些 media_id 上,而不是全部。postsrender json:

标签: javascriptruby-on-railsjsonajax

解决方案


终于弄明白了:JavaScript 最多只支持 53 位整数,并且一些 media_id 比这更大。通过在将 media_ids 发送到客户端之前将其转换为 Ruby 中的字符串来解决此问题。


推荐阅读