2012-03-15 100 views
1

我得到不同的結果,如果我JS渲染渲染與JSON .Trying弄清楚爲什麼預期渲染JSON與在軌JS

這並不完全工作

我的JavaScript看起來像這樣:

$(function() { 
    $('.delete_post').bind('ajax:success', function() { 
      $(this).closest('tr').fadeOut(); 
     } 
    ) 
}); 

控制器:

作品

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

作品

respond_to do |format| 
    format.js { head :ok } 
end 

作品

respond_to do |format| 
    format.json { render :json => {} } 
end 

不工作

respond_to do |format| 
    format.json { head :ok } 
end 

不工作

respond_to do |format| 
    format.json { render :nothing => true } 
end 

當我檢查ajax響應中發生了什麼時,我發現它不起作用的情況下,我得到一個「parseError」。

據我所知,返回的內容類型是不同的(text/javascript vs applicaiton/json),但我仍然期望最後兩種情況可以工作,因爲他們發回200到服務器。

(代碼源自:http://net.tutsplus.com/tutorials/javascript-ajax/using-unobtrusive-javascript-and-ajax-with-rails-3/

+0

您可能會發現這有幫助:http://stackoverflow.com/questions/5213956/what-means-location-and-head-ok-in-the-respond-to-format-statemen – PhillipKregg 2012-03-15 21:45:30

+0

該鏈接是有幫助的,但只是解釋了爲什麼/如何發送200響應。我知道我在「無法正常工作」的情況下發送了200個響應,但仍然陷入了javascript中的「parseError」 – Hortitude 2012-03-16 18:14:02

回答

0
format.json { head :ok } 

format.json { render :nothing => true } 

,因爲他們沒有返回有效的JSON不起作用。 head :ok將簡單地將響應標頭設置爲200,並且:nothing => true將呈現無效json的空白頁面/文檔。