Ich habe eine Seite, die wir anrufen können parent.php
. Auf dieser Seite habe ich ein iframe
Formular mit einem Übermittlungsformular und darüber hinaus ein Div mit der ID "Ziel". Ist es möglich, das Formular im Iframe einzureichen und bei Erfolg das Ziel-Div zu aktualisieren? Sagen Sie, laden Sie eine neue Seite hinein oder so?
Bearbeiten: Das Zieldiv befindet sich auf der übergeordneten Seite. Meine Frage lautet also im Grunde, ob Sie beispielsweise einen jQuery-Aufruf außerhalb des Iframes an die übergeordnete Seite senden können. Und wie würde das aussehen?
Edit 2: So sieht mein jquery-Code jetzt aus. Es befindet sich auf der Iframe-Seite. Das div #target befindet sich in der 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();
});
})
Ich weiß nicht, ob das Skript aktiv ist, da das Formular erfolgreich gesendet wurde, aber dem Ziel nichts passiert.
Edit 3:
Jetzt versuche ich, die übergeordnete Seite über einen Link im Iframe aufzurufen. Und auch dort kein Erfolg:
<a href="javascript:window.parent.getElementById('#target').load('mypage.php');">Link</a>
quelle
Antworten:
Ich denke, das Problem könnte sein, dass Sie Ihr Element aufgrund des "#" in Ihrem Aufruf nicht finden, um es zu erhalten:
window.parent.document.getElementById('#target');
Sie benötigen das # nur, wenn Sie jquery verwenden. Hier sollte es sein:
window.parent.document.getElementById('target');
quelle
Sie können von einem iframe aus auf Elemente des übergeordneten Fensters zugreifen, indem Sie Folgendes verwenden
window.parent
:// using jquery window.parent.$("#element_id");
Welches ist das gleiche wie:
// pure javascript window.parent.document.getElementById("element_id");
Und wenn Sie mehr als einen verschachtelten Iframe haben und auf den obersten Iframe zugreifen möchten, können Sie Folgendes verwenden
window.top
:// using jquery window.top.$("#element_id");
Welches ist das gleiche wie:
// pure javascript window.top.document.getElementById("element_id");
quelle
getElementById
. Könnte verwirrend für neue Entwickler sein 👍Haben Sie die folgenden js im Iframe und verwenden Sie Ajax, um das Formular zu senden.
$(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"); }); }); }); });
quelle
window.parent.$("#target").length
im Erfolgshandler zu alarmieren ?form[name=nameOfYourform]
anstelle vonform
Ich denke, Sie können einfach window.parent aus dem iframe verwenden. window.parent gibt das Fensterobjekt der übergeordneten Seite zurück, sodass Sie Folgendes tun können:
window.parent.document.getElementById('yourdiv');
Dann mach was du willst mit diesem Div.
quelle