ドメイン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に、私はIFRAMEのSRCを変更するには、外部のイベントを可能にすることによって、私はiframeを管理するためのカスタムjQueryプラグインを使用しています。使用方法は次のようになります
これは、iFrameのsrcをクレジットカードのページに変更します。私はまた、このようなのiframeにonloadイベントを添付しています
$(this).bind('load', function() {
var src = $(this).attr('src').toLowerCase();
//do stuff based on url
});
私が何をしたいのかクレジットカードのフォームが送信され、交換が行われたときで、私は、IFRAME内の文書は、IFRAMEのonloadをトリガーにしたいですドメインbが何か起こったことを知るようにする。
もう1つの解決策は、カスタムイベントをiframeに何らかの形でバインドして、枠付きドキュメント内でトリガーすることです。私はそれがうまくいくかどうかわからない。何か案は?
EDIT:
私は親にIFRAMEアップからイベントトリガを使用しようとしていると私はエラーを取得します。
URL http://localhost:27412/Framed/Index/のフレームからURL http://localhost:59905/Home/Framed で フレームにアクセスするための安全でないJavaScriptの試み。 ドメイン、プロトコル、ポートは に一致する必要があります。ここで
は
$(document).bind('success:myframe', function (event, referenceId) {
//do something
});
を結合私の場合だと、ここでフレームページからjavascriptの呼び出しがあります。これは、私はあなただけの親ウィンドウへのiFrameからのイベントを渡したいと思うajax.beginform
function paymentReceived() {
var referenceNumber = $('#referenceNumber').text();
$(top.document).trigger('success:myframe', referenceNumber);
}
私はインラインフレーム内から親にトリガーを使用してみましたが、私はURLのhttpでフレームにアクセスするために '安全でないJavaScriptの試みを取得:// localhostを:59905 /ホーム/額縁URL http:// localhost:27412/Framed/Index /のフレームから取得します。ドメイン、プロトコル、ポートは一致しなければなりません。 – Josh
クロスドメインの問題は本当に面倒です。もしあなたが好きなら、それを回避する方法については、「クロスドメインハック」を検索してください。私は別の解決策で答えを更新しました。 –
ajaxを使用しているときにonloadイベントが発生しません。私はonloadイベントを配線しました。私の問題は、特定のカスタムイベントをiframeから親ページに渡すことができるようにすることです。 – Josh