2011-01-20 74 views
0

我有一個錯誤跟蹤應用程序將用於多個應用程序。 在應用程序中,我有一個tickets_controller這使用facebox_render在facebox中呈現一個新窗體。從另一個應用程序的rails 3 ajax響應

這是工作正常,當我在同一個應用程序中這樣做。 要清楚再說,bug跟蹤系統上運行localhost:3000和客戶端應用程序在localhost:3001

運行,但如果我通過Ajax請求命中localhost:3000/tickets/newlocalhost:3001。它根本不加載表單。我嘗試將div放入localhost:3001應用中,並通過localhost:3000/tickets/new進行更新,但不起作用。

有什麼我需要配置或需要添加?

回答

2

這是由於XMLHttpRequest及其same origin策略的限制。簡而言之,你不能通過AJAX進行跨站請求(你的情況是因爲端口號是原始定義的一部分)。

有幾個解決這個問題的方法,你可能想要調查,例如。 JSONP或代理Web服務。 This article很好地總結了幾種可能的解決方案。

+0

謝謝米蘭..。 – Pravin 2011-01-20 11:38:58

0

在Facebox示例中,它看起來像通過XHR/AJAX加載遠程頁面內容。您只能使用相同域/端口上的頁面執行此操作。

在您的方案中,您需要將頁面加載到iFrame中。我不知道Facebox是否可以做到這一點。檢查Fancybox,因爲它可以做到這一點,並且很容易實現。

+0

呃..我不認爲這是面部盒子的問題。因爲正如我在提到的「我嘗試在localhost:3001應用程序中放入一個div並從localhost:3000/tickets/new更新它,但也不會起作用」這個問題中提到的,但仍然會嘗試使用fancybox。即使它工作的問題仍未得到更新的div。謝謝.. – Pravin 2011-01-20 07:58:37