2012-03-15 2 views
1

私はjsファイルをレンダリング対レンダリングJSON

を予想通り、これは非常に動作しない理由を把握するために、JSON .Tryingをレンダリングする場合、私は異なる結果を得ている私の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」が得られます。

戻ってくるContent-typeが異なっている(text/javascriptとapplicaiton/json)ことは理解していますが、サーバーに200を送り返しているので、最後の2つのケースが動作すると考えています。

(コードから派生: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

+0

このリンクは役立ちますが、 200の応答を送信する理由/方法を説明しています。私は、 "Does not work"のケースでは200の回答を送っていますが、まだjavascriptの中では "parseError"になっています – Hortitude

答えて

0
format.json { head :ok } 

format.json { render :nothing => true } 

彼らは有効なJSONを返すていないので、動作しません。 head :okは単にレスポンスヘッダを200に設定し、:nothing => trueは空白のページ/ドキュメントをjsonには有効ではないものにレンダリングします。

関連する問題