【问题标题】:Success function not being triggered when rendering a JSON response in Rails 4在 Rails 4 中呈现 JSON 响应时未触发成功函数
【发布时间】:2015-09-29 19:53:18
【问题描述】:

我正在使用 jQuery 的 $.get 函数从服务器获取 JSON 响应。

$.get(SITE_EDIT_HOME_URL,{key: key},function(r){
   r = JSON.parse(r);
   console.log(r);
});

这就是我接收请求并发送响应的方式

def group_fields
   respond_to do |format|
       format.js do
           @group_fields = @site.theme.group(params[:key],@site);
           return render json: @group_fields
       end
   end
end

检查网络,这是 Chrome 收到的响应:

{"type":"group","fields":[1,2,3,4]}

正确的 JSON 字符串。但是没有执行成功回调函数,也没有显示错误。怎么了?我怎样才能使这项工作?我必须创建group_fields.js 吗?我进行了测试,最后一个想法可行,但我失去了回调函数的上下文。

提前致谢

【问题讨论】:

  • 如果成功回调函数没有被执行,验证chrome如何收到响应r?另外,你不需要return renderrender 就可以了
  • 我与检查员核实。检查元素 > 网络。我使用了 return 因为在我发布之前它下面还有另一个渲染。改变它不会影响情况
  • get 更改为getJSONformat.js 更改为format.json 有什么作用吗?因为你有多种渲染类型,我想知道它是否找不到合适的。
  • 好主意。我愿意。问题是什么?我知道请求类型已更改,但为什么 chrome 收到响应却什么也没做?
  • 我想知道为什么我被否决了。这是一个合理的问题

标签: javascript jquery ruby-on-rails json ruby-on-rails-4


【解决方案1】:

get 更改为getJSONformat.js 更改为format.json 应该可以解决问题。它可能源于 mime 类型不匹配,因为您有多种不同的格式。

here 所见,有多种不同的类型映射到格式。未指定 json 的歧义可能导致类型不匹配,rails 无法正常返回

【讨论】:

    【解决方案2】:

    您需要尝试以下代码。您必须将格式更改为respond_to format json,因为您从 jquery 访问,然后响应应该返回到 jquery。

    def group_fields
       @group_fields = @site.theme.group(params[:key], @site)
       respond_to do |format|
           format.html { render :nothing => true }
           format.json { render json: @group_fields}
         end
       end
    end
    

    jQuery

    当控制器的响应是 json 格式时,你没有解析成 JSON。尝试执行以下操作:

    $.get(SITE_EDIT_HOME_URL,{key: key},function(r){
       console.log(r);
    })
    .done(function() {
      console.log(r);
    })
    .fail(function() {
      console.log(r);
    })
    .always(function() {
      console.log(r);
    });
    

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多