【问题标题】:Not able to fetch json data in RoR无法在 RoR 中获取 json 数据
【发布时间】:2013-03-06 20:22:38
【问题描述】:

在我看来,这是我的代码,我正在向方法 campaign_creation 发出 ajax 获取请求

$(document).ready(function(){
    $("#submit").click(function(){
        $.get("/configure_campaign/campaign_creation",{category_name: $("#category_name").val()}, function(data){

            $("#category_name").val('');
            $("#form_add_category").css("display","none");
            alert(data.category_name)

        })
    })
})

这是我的方法代码

def campaign_creation
    if(params[:page_id] and params[:page_access_token])

        abcd=params[:page_id].split("_")
        session[:page_id]=abcd[0]
        session[:page_access_token] = params[:page_access_token]

    else

        category=Category.new
        category.category_name=params[:category_name]
        category.page_id=session[:page_id]
        category.save
        @category=Category.find(1)
        @category.to_json

    end
end

我想我应该能够在我的变量数据中访问@category。如果我只是将数据放在我的警报框中,我会得到页面的完整代码,如果 data.category_name 我得到未定义的结果。

【问题讨论】:

  • 请发布日志和/或错误。

标签: ruby-on-rails ajax json ruby-on-rails-3 get


【解决方案1】:

仅根据您为操作提供的代码,您不会呈现 JSON 响应。您的campaign_creation 方法将尝试查找campaign_creation.html.erb 文件并呈现text/html 响应。

相反,您需要明确告诉 Rails 呈现 JSON 数据以及操作结束并停止处理。

render json: @category and return

现在您可以期望 Ajax 响应中的 data 变量可以访问 @campaign:category_name 属性。

【讨论】:

  • 非常感谢。这行得通。我有另一个问题。说而不是像这里那样只包含一行的对象。它包含不止一行。例如。我们有 @categories=Category.where(..) 它返回多行。我们如何在 json 响应中发送它并在我们的 jQuery.. 中处理它?
  • 我强烈建议您查看 active_model_serializers gem。它有据可查,可以让将复杂的 JSON 传递到前端成为一项简单的任务。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 1970-01-01
  • 2017-08-02
  • 1970-01-01
相关资源
最近更新 更多