Браузер показывает json данные вместо самой html страницы

765 views
Skip to first unread message

Yura Smirnov

unread,
Jun 8, 2012, 6:32:39 AM6/8/12
to ror...@googlegroups.com
Почему-то когда нажимаешь в браузере кнопку назад, то показывает json данные, а не html страницу.
Но если обновить страницу, то она вновь отображается правильно.
Вывод json делаю respond_to :html, :json, Rails 3.2.1.

Кто-нибудь сталкивался с таким поведением json в браузерах?
Наблюдается в файрфоксе, хроме. В опере такого нет. а в ИЕ бог его знает.
Как починить, уже голову сломал. Может кто из коллег знает?

Вот сам сайт
http://sharp-mist-5735.herokuapp.com/categories/dietsady?page=4

Андрей

unread,
Jun 8, 2012, 6:37:41 AM6/8/12
to ror...@googlegroups.com
Хм, странно - попробовал - у меня всё, как описано. Странная фигня.

Андрей

unread,
Jun 8, 2012, 6:40:48 AM6/8/12
to ror...@googlegroups.com
Где-то косяк в JS у вас. Смотрю исходник страницы - а там json. Отключил JS - все работает нормально. Ищите.

Yura Smirnov

unread,
Jun 8, 2012, 6:49:44 AM6/8/12
to ror...@googlegroups.com
Спасибо за наводку, действительно, консоль говорит что что-то с картой не то стало, буду искать там ошибку.
На страницах без карты такого не наблюдается, хотя там тоже json данные используются.

Дмитрий Федоренко

unread,
Jun 8, 2012, 8:13:20 AM6/8/12
to ror...@googlegroups.com
Нечто подобное встречал. У меня была так: загружалась обычная страница в html, а через некоторое время проверялось наличие обновления через js, запрос был по тому же пути, только в хедере был указан формат json. Данные приходили в формате json и, по сколько путь одинаковые, то в кеш ложился json. B если перейти по ссылке на страницу и вернутся, то отображался json из кеша. Лечится явным указанием формата в пути (добавить расширение .json или добавить параметр format=json).

пятница, 8 июня 2012 г., 14:32:39 UTC+4 пользователь Yura Smirnov написал:

Yura Smirnov

unread,
Jun 8, 2012, 10:40:34 AM6/8/12
to ror...@googlegroups.com
Нашел причину.
Все дело в функции getJSON для которой надо путь указывать с расширением .json, как и подсказал Дмитрий.
Всем спасибо.

Alexey Petrushin

unread,
Jun 8, 2012, 4:58:23 PM6/8/12
to ror...@googlegroups.com
Хе-хе, та-же фигня была пару дней назад (на backbone.js ) причина, насколько я понял вот в чем (ниже копия моего письма где это описывается)

"""
Насколько я понял, проблемы с Назад/Вперед кнопкой вызваны тем что Хром не использует Content-Type при кешировании. 
Соответственно - если урл для HTML и JSON совпадает - это может привести к тому JSON заменит в кеше HTML, это все усугубляется тем что при нажатии на кнопку назад Хром игнорирует Cache-Control: no-cache и всеравно достает из кеша.
В итоге это временами ведет к нарушению работы кнопок вперед/назад.

Детали:

Разрабочики Хрома убеждены что так и должно быть и исправлять не собираются.

Варианты решения:
- использовать отличные УРЛы для АДЖАКС запросов (как в рельсах например).
- вроде пишут что если добавить Cache-Control: no-cache, no-store то может помоч.
"""

Вобшем добавление no-store вроде как решает проблему, но лучше наверно использовать .json

П.С. кстати, пните разработчиков хрома, кому не лень по ссылке, пусть правят этот косяк.

Reply all
Reply to author
Forward
0 new messages