rails 4:对ajax post的响应导致呈现响应的错误

时间:2014-10-05 02:43:34

标签: jquery ruby-on-rails ajax post

在我的rails 4项目中,我使用POST和jquery这样提交数据(注意,咖啡脚本):

post_data =
        site_id: site
        url: '//' + $('#host-holder').data('host') + '/' + key

$.post("/sites/" + site + "/images",post_data, (success) ->
        #successful_post
 ).fail( (xhr, textStatus, errorThrown) ->
        #post failed
 )

在我的控制器中,如果我这样做:

respond_to do |format|
      format.js {render nothing: true}
end

POST提交工作正常(在ajax客户端运行中成功回调),但如果我这样做:

respond_to do |format|
      format.js {render json: @image.to_json, status: :created}
end

失败(ajax客户端运行失败回调)。

为什么?我在回应ajax请求时做错了什么? (注意:服务器端没有报告错误)

编辑:错误是&#34; parsererror&#34;,我实际上有整个对象!它说"missing ; before statement" ...这是响应对象:"{"id":24,"url":"<EDITED FOR SECURITY>","thumbnail":null,"status":null,"site_id":28,"created_at":"2014-10-05T02:53:50.030Z","updated_at":"2014-10-05T02:53:50.030Z","quality":"good"}"

1 个答案:

答案 0 :(得分:0)

这里你的ajax声明应该是这样的,

$.ajax({
  URL: '/controller_name/action_name',           // url must be proper
  type: 'POST',
  data: { username: 'test' },
  success: function(response){
    alert(response);
  },
})

在Route.rb中:

post '/action_name' => 'controller_name#action_name'

在控制器文件中:

def action_name
  @username = params[:username]
  data = {:message => "Alert this!"}
  render :json => data
end