2011-01-20 6 views
0

У меня есть приложение отслеживания ошибок, которое должно использоваться для нескольких приложений. В приложении у меня есть tickets_controller, который отображает новую форму в facebox с помощью facebox_render.рельсы 3 ответ ajax от другого приложения

Это прекрасно работает, когда я делаю это в одном приложении. Для того, чтобы понять, скажем, ошибка трекер работает на localhost:3000 и клиентское приложение работает на localhost:3001

Но если я ударил localhost:3000/tickets/new из localhost:3001 через AJAX запрос. Он не загружает форму вообще. Я попытался положить div в localhost:3001 приложение и обновить его через localhost:3000/tickets/new, также не работает.

Есть ли что-нибудь, что мне нужно настроить или добавить?

ответ

2

Это связано с ограничениями XMLHttpRequest и его политики same origin. Проще говоря, вы просто не можете делать кросс-сайты с помощью AJAX (это ваш случай, поскольку номер порта является частью определения происхождения).

Существует несколько способов обхода этой проблемы, которую вы можете исследовать, например. JSONP или прокси-сервер. This article суммирует пару возможных решений довольно хорошо.

+0

Спасибо, Милан ... – Pravin

0

Из примера Facebox, похоже, он загружает удаленный контент страницы через XHR/AJAX. Это можно сделать только со страницами на одном домене/порту.

В вашем сценарии вам нужно будет загрузить страницу в iFrame. Я не знаю, может ли Facebox это сделать. Проверьте Fancybox, поскольку он может это сделать и прост в реализации.

+0

Ну .. Я не думаю, что это проблема с facebox. Потому что, как я уже упоминал в вопросе о том, что «я попытался поместить приложение div в localhost: 3001 и обновить его с localhost: 3000/tickets/new, не работает», но все равно собирается попробовать fancybox. Даже если он работает, вопрос остается без ответа при обновлении div. Спасибо .. – Pravin

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