伙计我对这个RoR真的很新,此时我遇到了“如何在RoR中使用Jquery的ajax()调用的复杂情况?”
我有一个叫做像这样的项目的控制器
class ProjectsController < ApplicationController
def stagemilestone
@milestones=Milestone.find_by_sql("SELECT name, created_at FROM milestones WHERE stage=1")
end
end
我希望从jquery的ajax调用中调用此操作并返回数据,为此我正在使用这样的
$.ajax({
url: "/projects/stagemilestone",
success: function(){
//here i need the returned data from controller
// means output of @milestones
}
});
所以请帮帮我,怎么做?
答案 0 :(得分:1)
伙计们最后我发现解决方案跟随并且工作得很好!!
<强>控制器强>
def stagemilestone
@milestones=Milestone.find(:all, :conditions => ["status_id=? and project_id=?",params[:stageid], params[:id]])
respond_to do |format|
format.html # index.html.erb
format.json { render :json => @milestones}
end
end
和我的 char.js 看起来像这样
$.ajax({
type : 'get',
url : "/projects/stagemilestone",
data : "stageid=" + $(this).attr('name') + "&id=" + $.cookie('projectid'),
dataType : 'json',
async : false,
context : document.body,
success : function(response) {
}
});
答案 1 :(得分:0)
我认为你想要的是使用“respond_to”
像这样class ProjectsController < ApplicationController
def stagemilestone
@milestones=Milestone.find_by_sql("SELECT name, created_at FROM milestones WHERE stage=1")
respond_to do |format|
format.js {render :json => @milestones}
end
end
end
以下是有关respond_to,http://apidock.com/rails/ActionController/MimeResponds/InstanceMethods/respond_to
的更多信息更新:你可能想要仔细检查你的ajax请求的接受标题(你可以在firebug中查看请求),你可能需要使用format.json。请参阅此处获取MIME类型的完整列表,并确保它们匹配: http://apidock.com/rails/Mime
答案 2 :(得分:-1)
为成功回调添加参数;它将包含响应值。
success: function(response)
{
// response will be the HTTP / JSON / text returned from your controller
}
答案 3 :(得分:-1)
只需在回调函数中添加一个参数,例如:
$.ajax({
url: "/projects/stagemilestone",
success: function(output){
//Do something with 'output'
}
});