我拥有域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