parent.php
を呼び出すことができるページがあります。このページには、送信フォームを持つiframe
があり、その外側にidが "target"であるdivがあります。 iframeでフォームを送信し、成功するとターゲットdivを更新することは可能ですか?新しいページをそこにロードするか、何かしますか?
編集:ターゲットdivは親ページにあるので、私の質問は、基本的に、iframeの外で親にjQuery呼び出しを行うことができるかどうかです。そして、それはどのように見えるでしょうか?
編集2:これは私のjqueryコードが今どのように見えるかです。 iframeページにあります。 div #targetはparent.phpにあります
$(;"form[name=my_form]").submit(function(e){
e.preventDefault;
window.parent.document.getElementById('#target');
$("#target").load("mypage.php", function() {
$('form[name=my_form]').submit();
});
})
スクリプトがアクティブかどうかはわかりませんが、フォームは正常に送信されますが、ターゲットには何も起こりません。
編集3:
今、iframe内のリンクから親ページを呼び出そうとしています。そこにも成功はありません:
<a href="javascript:window.parent.getElementById('#target').load('mypage.php');">Link</a>
問題は、それを取得するための呼び出しに「#」が含まれているため、要素を見つけられないことであると思われます。
window.parent.document.getElementById('#target');
Jqueryを使用している場合にのみ#が必要です。ここにあるはずです:
window.parent.document.getElementById('target');
window.parent
を使用して、iframe内から親ウィンドウの要素にアクセスできます。
// using jquery
window.parent.$("#element_id");
これは次と同じです:
// pure javascript
window.parent.document.getElementById("element_id");
ネストされたiframeが複数あり、最上位のiframeにアクセスする場合は、次のように window.top
を使用できます。
// using jquery
window.top.$("#element_id");
これは次と同じです:
// pure javascript
window.top.document.getElementById("element_id");
Iframe内に以下のjsを用意し、ajaxを使用してフォームを送信します。
$(function(){
$("form").submit(e){
e.preventDefault();
//Use ajax to submit the form
$.ajax({
url: this.action,
data: $(this).serialize(),
success: function(){
window.parent.$("#target").load("urlOfThePageToLoad");
});
});
});
});
Iframeからwindow.parentを使用できると思います。 window.parentは親ページのウィンドウオブジェクトを返すため、次のようなことができます。
window.parent.document.getElementById('yourdiv');
次に、そのdivで必要な操作を行います。