Rails Action渲染html而不是json

时间:2013-10-01 12:46:28

标签: jquery ruby-on-rails ajax json

我正在使用Rails 3.我真的有一个奇怪的问题。我有一个国家/地区列表作为选择框,我在更改状态选择框时联系了jquery's $.ajax({})

该操作将状态代码作为参数,并返回属于特定状态的区域。当请求发送到/districts?state=1时,它会以状态代码302(found)响应,然后它还会将当前的html页面作为响应发送。

以下是我的代码:

# Controller Action

def districts
  state = params[:state]

  respond_to do |format|
    format.json{ render :json => get_districts(state) }
  end
end


# jQUery Request:

$.ajax({
    url: '<%= districts_path %>',
    data: {state: 1},
    success: function(data){
        for(i in data){
            options += '<option value="'+data[i].code+'">'+data[i].district+'</option>'
        }

        $("#some_element").html('<select id="some_district" name="some_district">'+options+'</select>')
    }
});

2 个答案:

答案 0 :(得分:3)

尝试将dataType选项设置为ajax调用:

$.ajax({
    url: '<%= districts_path %>',
    dataType: 'json',
    data: {state: 1},

编辑添加的逗号

答案 1 :(得分:2)

根据我的经验,HTTP 302是由于身份验证问题。您应该考虑发布您的控制器代码/路由和任何身份验证以及可能发生的任何错误。