Ich habe eine Kleinanzeigen-Website und auf der Seite, auf der Anzeigen geschaltet werden, erstelle ich ein Formular "Tipp an einen Freund senden" ...
Jeder, der möchte, kann einen Tipp der Anzeige an die E-Mail-Adresse eines Freundes senden.
Ich vermute, das Formular muss an eine PHP-Seite gesendet werden, oder?
<form name='tip' method='post' action='tip.php'>
Tip somebody: <input name="tip_email" type="text" size="30" onfocus="tip_div(1);" onblur="tip_div(2);"/>
<input type="submit" value="Skicka Tips"/>
<input type="hidden" name="ad_id" />
</form>
Beim Absenden des Formulars wird die Seite neu geladen ... das will ich nicht ...
Gibt es eine Möglichkeit, die E-Mail nicht neu zu laden und trotzdem zu senden? Am liebsten ohne Ajax oder JQuery ...
Vielen Dank
<iframe>
und dastarget
Attribut wird es tun.Antworten:
Sie müssen eine Ajax-Anfrage senden, um die E-Mail zu senden, ohne die Seite neu zu laden. Schauen Sie sich http://api.jquery.com/jQuery.ajax/ an.
Ihr Code sollte wie folgt aussehen:
Das Formular wird im Hintergrund an die
send_email.php
Seite gesendet, die die Anfrage bearbeiten und die E-Mail senden muss.quelle
return false;
vor den letzten schließenden Klammern hinzuIch habe herausgefunden, was meiner Meinung nach einfacher ist. Wenn Sie einen Iframe in die Seite einfügen, können Sie den Ausgang der Aktion dort umleiten und anzeigen lassen. Sie können natürlich nichts tun. In diesem Fall können Sie die Iframe-Anzeige auf none setzen.
quelle
action="about:blank"
$_POST["ad_id"]
Sie verwenden entweder AJAX oder Sie
quelle
<form id="myGiswebForm" method="post" action="https://******/saveForm.asp" target="myiframe">
und<iframe style="display:none;" src="" name="myiframe"></iframe>
Der schnellste und einfachste Weg ist die Verwendung eines Iframes. Fügen Sie einen Rahmen am Ende Ihrer Seite ein.
<iframe name="frame"></iframe>
Und in deiner Form mach das.
und um den Frame in Ihrem CSS unsichtbar zu machen.
quelle
display:none;
und nichtborder:0px
. Versuchte Bearbeitung, aber meine Änderungen werden von Rezensenten abgelehnt, die sich anscheinend nicht die Mühe machen, den Bearbeitungskommentar anzusehen. Bitte ändern Sie Ihre Antwort, um den Code zu korrigieren.Senden eines Formulars ohne erneutes Laden der Seite und Abrufen des Ergebnisses der übermittelten Daten auf derselben Seite
Hier ist ein Teil des Codes, den ich im Internet gefunden habe, um dieses Problem zu lösen:
1.) IFRAME
Wenn das Formular gesendet wurde, wird die Aktion ausgeführt und zielt auf den angegebenen Iframe ab, der neu geladen werden soll.
index.php
iframe_content.php
2.) AJAX
Index.php:
server_action.php
Stichworte: phpAjaxjqueryserverseitightml
quelle
jquery-ajax
In diesem Fall ist es ein Muss, Hilfe in Anspruch zu nehmen . Ohneajax
gibt es derzeit keine Lösung.Rufen Sie zunächst eine JavaScript-Funktion auf, wenn das Formular gesendet wird. Einfach einstellen
onsubmit="func()"
. Selbst wenn die Funktion aufgerufen wird, wird die Standardaktion der Übermittlung ausgeführt. Wenn dies ausgeführt wird, gibt es keine Möglichkeit, das Aktualisieren oder Umleiten der Seite zu verhindern. Die nächste Aufgabe besteht also darin, die Standardaktion zu verhindern. Fügen Sie am Anfang die folgende Zeile einfunc()
.Jetzt erfolgt keine Umleitung oder Aktualisierung mehr. Sie tätigen einfach einen Ajax-Anruf von
func()
und tun, was Sie möchten, wenn der Anruf endet.Beispiel:
Bilden:
Javascript:
quelle
Genau so kann es ohne jQuery und AJAX funktionieren und es funktioniert sehr gut mit einem einfachen iFrame. Ich liebe es, arbeitet in Opera10, FF3 und IE6. Dank einiger der oben genannten Poster, die mir die richtige Richtung weisen, ist dies der einzige Grund, warum ich hier poste:
der PHP-Code, der die Seite generiert, die oben aufgerufen wird:
quelle
print
zum Drucken von HTML-Code. Schließen Sie einfach das PHP-Tag?>
und fügen Sie anschließend den HTML-Code hinzu. Und vermeidenexit
Sie es, es ist nicht notwendig (schwerwiegende Fehler, ...)Dies sollte Ihr Problem lösen.
In diesem Code rufen wir nach dem Klicken auf die Schaltfläche "Senden" jquery ajax auf und übergeben die URL an
POST / GET-
Daten vom Post- Typ : Dateninformationen, die Sie in Eingabefeldern oder anderen auswählen können.
Erfolg: Rückruf, wenn alles in Ordnung ist, vom Serverfunktionsparameter
Text, HTML oder JSON, Antwort vom Server
in Erfolg Sie können Schreibwarnungen schreiben, wenn sich die erhaltenen Daten in einem Zustand befinden und so weiter. oder führen Sie Ihren Code aus, was als nächstes zu tun ist.
quelle
Sie können versuchen, das Zielattribut Ihres Formulars auf einen versteckten Iframe festzulegen, damit die Seite mit dem Formular nicht neu geladen wird.
Ich habe es mit Datei-Uploads versucht (von denen wir wissen, dass sie nicht über AJAX durchgeführt werden können), und es hat wunderbar funktioniert.
quelle
Haben Sie versucht, einen iFrame zu verwenden? Kein Ajax, und die Originalseite wird nicht geladen.
Sie können das Übermittlungsformular als separate Seite im Iframe anzeigen. Wenn es übermittelt wird, wird die äußere / Containerseite nicht neu geladen. Diese Lösung verwendet keine Art von Ajax.
quelle
Wenn Sie auf derselben Seite senden, auf der sich das Formular befindet, können Sie die Formular-Tags ohne Aktion schreiben, und es wird wie folgt gesendet
quelle
Ich habe etwas Ähnliches wie oben gemacht, aber ich musste meine Formulardaten und Leinwände für grafische Anhänge zurücksetzen. Also hier ist, was ich mir ausgedacht habe:
Das funktioniert gut für mich, für Ihre Anwendung nur eines HTML-Formulars können wir diesen JQuery-Code wie folgt vereinfachen:
quelle
Sie müssen JavaScript verwenden, ohne dass dies zu einem
iframe
(hässlichen) Ansatz führt.Sie können dies in JavaScript tun. Die Verwendung von jQuery macht es schmerzlos.
Ich schlage vor, Sie schauen sich AJAX und Posting an.
quelle
Eine weitere Möglichkeit besteht darin, einen direkten Javascript-Link zu Ihrer Funktion herzustellen:
...
quelle
Die Seite wird neu geladen, wenn Sie kein Javascript verwenden möchten
quelle
<iframe name="ew" />
und<form target="ew" />
Ich habe viele Male nach einer guten Lösung gesucht und die Antwort von @taufique hat mir geholfen, zu dieser Antwort zu gelangen.
NB : Vergessen Sie nicht,
event.preventDefault();
den Anfang des Funktionskörpers zu setzen.quelle
Hier ist eine jQuery zum Posten auf einer PHP-Seite und zum Zurückholen von HTML:
quelle