2011-03-23 53 views
0

我目前正在開發一個小型rails應用程序,允許我管理我的個人書籤,沿着美味滿足instapaper的行和第一次,我面臨的侷限性跨域表單發佈,我不確定如何克服。jQuery跨網域發佈到rails網站

在瀏覽任何網站時,我可以按下書籤,將jQuery(1.5)和自定義HTML表單注入到當前DOM中。在填寫並提交之前注入的表格後,我將重定向到我的rails網站,在那裏顯示成功的確認。

當我嘗試通過用Ajax請求替換原始表單工作流來避免重定向時,我的問題就開始了。顯然,瀏覽器正在執行相同的來源策略,限制我將任何數據發佈到我的遠程網站。

一些開發人員建議我代理請求或開始在iframe中呈現表單。關於代理解決方案,我真的不知道如何使用rails來實現這一點。 iframe看起來很可行,但我不確定在DOM中訪問/工作/更新是多麼容易。

在此先感謝!

回答

1

不要讓工作與iframe恐嚇你。從父母通過以下方式訪問很容易:

  • window.frame.frame [0] ... //繼續您的調用,假設目標iframe是頁面上的第一個/唯一框架。

  • window.frame.frameid ... ///這裏繼續你的電話。

或使用jQuery:

  • $( 「#的iFrame」)的內容()找到( 「#someDiv」)//這裏繼續您的通話。
+0

Hi Cory。當我嘗試從我的Firebug控制檯訪問iframe時,出現「Error:Permission denied to access property'ownerDocument'」。對此有何想法?謝謝 – 2011-03-23 15:43:25

+0

嗯,是的,我的建議假設你在同一個域上工作。出於安全原因,您無法操作來自不同域的iframe中的元素。 – 2011-03-23 15:48:12

1

使用iFrame方法,您可以使用javascript獲取parent.window(我相信)網址。我不確定你有多少DOM訪問權限。

你也可以嘗試看一下jQuery的AJAX端:Ajax API - jQuery。這將允許您發佈到腳本(我確信我幾年前使用它跨域)。有了這個,你可以讓腳本向頁面上的表單返回一個代碼,而不必重定向。