2014-10-05 34 views
0

在我的軌道4的項目,我有一個POST和jQuery這樣的(注意,咖啡腳本)提交資料:軌道4:應對阿賈克斯後會導致錯誤的渲染響應

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 

提交後的優秀作品(在AJAX客戶端成功運行的回調),但如果我這樣做:

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

它失敗(在Ajax客戶端運行失敗回調)。

爲什麼?我在迴應ajax請求時做錯了什麼? (注意:服務器端沒有錯誤報告)

編輯:錯誤是「parsererror」,我其實有整個對象!它說"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"}"

+0

控制檯中的故障描述是什麼? – 2014-10-05 02:45:14

+0

@ControlFreak請參閱我的編輯;我會假設在我的控制器中的@ image.to_json會構造正確的json? – faboolous 2014-10-05 03:01:29

+1

您可以使用json驗證器(如jsonlint)檢查您的json是否正確。你在響應中將'content-type'頭部設置爲'application/json'嗎? – 2014-10-05 03:03:08

回答

0

這裏你阿賈克斯的說法應該像現在這樣,

$.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' 

在Controller文件:

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