2012-03-15 3 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».

Я понимаю, что получение типа содержимого, отправленное обратно, отличается (текст/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

+0

Эта ссылка полезна, но просто объясняет, почему/как отправить ответ 200. Я знаю, что я отправляю ответ 200 в случаях «Не работает», но все равно попадаю в «parseError» в javascript – Hortitude

ответ

0
format.json { head :ok } 

и

format.json { render :nothing => true } 

не работают, потому что они не возвращаются правильный JSON. head :ok просто установит заголовок ответа на 200 и :nothing => true отобразит пустую страницу/документ, который недействителен json.

Смежные вопросы