通过ajax从rails控制器渲染返回的数据

时间:2011-10-11 06:42:09

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

在rails应用程序中,我试图使用Ajax / jQuery获取少量记录,我正在获取正确的数据,但问题是如何解析返回的数据并将其呈现为HTML?

我的js功能

 $.ajax({
        url: "/questions/retrieve_function",
        dataType:'json',
        data: {
            'obsolete': 1
    },
    success: function(data){
        $.each(data, function(key, value) {
            alert(key + ", " + $.param(value));
        });

    },
    error: function(){
        alert('error');
    },
    type: 'GET'
});

我的控制器方法:

def retrieve_function
 obsolete = params[:obsolete]
 @values = values.find(:all, :conditions => ["obsolete = ?", obsolete])
  respond_to do |format|
   format.html
   format.json { render :json => @values }
  end
end

目前正在使用$ .param检查是否获得正确的值,任何帮助将不胜感激,谢谢:)

更新

返回格式

"[[
  {\"question\":{\"created_at\":\"2011-09-26T12:56:41Z\",\"choicea\":\"dg<br>\",\"qtype\":\"multiple\",\"title\":\"dfgdfg<br>\",\"choiceb\":\"dg<br>\",\"updated_at\":\"2011-10-10T14:41:52Z\",\"choicec\":\"dfg<br>\",\"choiced\":\"dg<br>\",\"id\":50,\"hint\":\"dg<br>\",\"obsolete\":1,\"correctans\":\"C\"}}

]]"

1 个答案:

答案 0 :(得分:1)

首先,你的json格式应该只有一个括号,你必须改变你的服务器代码。然后你可以使用这个函数从json

获取你的值
$.each(data,function(key,value){
    alert(key+" - "+value.question.title + " - "+value.question.created_at+" ...")
})