【发布时间】:2012-02-27 12:44:04
【问题描述】:
我正在尝试从操作中获取一些 json,但我遇到了问题。
我知道你可以返回“format.js”并返回一个“.js.erb”文件,但是......想象一下我有一个返回一些东西的动作,我想以两种不同的方式处理它。我不能在同一个 .js.erb 上使用这两种不同的方式,因为当我返回它时,两种方式都会被执行,对吧?我的意思是,当我返回该文件时,该文件将被完全处理。
所以我尝试使用jQuery的方式。
我有:
# GET /posts/slug/hidden_content.json
def hidden_content
@post = Post.find(params[:id])
@post = hidden_post_part(@post.body)
respond_to do |format|
format.json { render json: @post, :status => :ok}
end
end
在 controller.coffee 中:
$ ->
# Render hidden part of post
$(".showallpost img").click( ->
post_url = $(this).next().attr("href").split("/").pop();
$.ajax
url: Routes.hidden_content_path(post_url),
type: "GET",
contentType: "application/json",
success: (data) ->
console.log "foo"
);
GET 完美运行,它返回我需要的内容,但从未调用成功函数,我没有看到“foo”日志。
我猜这个动作应该返回一些东西来告诉调用者 GET 是成功的。 (我尝试使用 :status 没有运气)。
所以我无法使用我的 GET 数据。
想法?
【问题讨论】:
-
当您尝试使用 dataType: "JSON" 并删除 contentType 选项时会怎样?或者针对相同的 URL 发出请求,但将 .json 附加到它。问题是 jQuery 将此归类为失败的请求,因为响应格式与预期的格式不匹配。
-
@TanelSuurhans 我尝试了 dataType 并且 .json 在 url 中,没有触发成功。还有 Ryan github.com/railsware/js-routes 只是一个 js 脚本,可以帮助您处理 rails 路线,得心应手。
标签: jquery ruby-on-rails json get