Рендеринг JSON против JS в рельсах - PullRequest
1 голос
/ 16 марта 2012

Я получаю разные результаты, если рендеринг js по сравнению с рендерингом json. Попытка выяснить, почему это не работает так, как ожидалось

Мой 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 applicationaiton / json), но я все же ожидаю, что последние 2 случая будут работать, поскольку они отправляют обратно 200 на сервер.

(Код, полученный из: http://net.tutsplus.com/tutorials/javascript-ajax/using-unobtrusive-javascript-and-ajax-with-rails-3/)

1 Ответ

0 голосов
/ 19 декабря 2013
format.json { head :ok }

и

format.json { render :nothing => true }

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...