У меня есть вид с формой оплаты кредитной картой, размещенной в Домене A. В домене B есть отдельный веб-сайт с iframe для формы кредитной карты в домене A.
В форме в домене 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, позволяя внешним событиям изменять источник iframe.Использование выглядит следующим образом:
$('#myIframe').frameplugin('creditcard');
, что заставляет iframe изменить свой src на страницу кредитной карты.Я также прикрепил загрузку к iframe следующим образом:
$(this).bind('load', function () {
var src = $(this).attr('src').toLowerCase();
//do stuff based on url
});
Что я хочу сделать, это когда форма кредитной карты отправлена и замена выполнена, я хочу, чтобы документ в iframe вызвалСобытие onraf iframe, так что домен 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);
}