我擁有域A上託管的信用卡付款表單的視圖。域B具有單獨的網站,其域A上的信用卡表單具有iframe。在iframe中的內容上執行ajax替換時觸發iframe onload事件
上域A的形式使用ajax的形式是這樣的:
<% using (Ajax.BeginForm("CreditCard", "Framed", new { id = Model.SID },
new AjaxOptions()
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "credit-card-wrapper",
LoadingElementId = "loading-pane"
},
new { id = "new-creditcard-form" }))
{ %>
然後在域b,我使用的是自定義的jQuery插件,允許外部事件來改變iframe的SRC來管理我的iframe 。使用看起來像這樣
$('#myIframe').frameplugin('creditcard');
這導致iframe將其src更改爲信用卡頁面。我還附上一個onload到IFRAME這樣的:
$(this).bind('load', function() {
var src = $(this).attr('src').toLowerCase();
//do stuff based on url
});
我想要做的是當信用卡表單提交和置換完成後,我想在iframe中的文件來觸發的iframe的onload事件,以便域b知道發生的事情。
另一種解決方案是以某種方式將自定義事件綁定到iframe並在框架文檔中觸發它們。我不知道如何/如果這將甚至工作。有任何想法嗎?
編輯:
我試圖使用事件觸發從IFRAME到父,我得到一個錯誤。
不安全JavaScript嘗試與URL http://localhost:59905/Home/Framed 訪問 幀幀從與URL http://localhost:27412/Framed/Index/。 域名,協議和端口必須匹配 。
這裏是我的事件綁定
$(document).bind('success:myframe', function (event, referenceId) {
//do something
});
,這裏是從框架頁面的JavaScript調用。這是從的onSuccess堪稱ajax.beginform
function paymentReceived() {
var referenceNumber = $('#referenceNumber').text();
$(top.document).trigger('success:myframe', referenceNumber);
}
我試圖使用從iframe中父觸發,但我得到'不安全的JavaScript嘗試與URL訪問http幀://本地主機:59905 /首頁/幀從URL http:// localhost:27412/Framed/Index /。域名,協議和端口必須匹配。' – Josh 2011-01-19 20:41:17