使用PHPMailer提交ajax表单

时间:2018-12-01 16:10:11

标签: jquery ajax phpmailer

我正在尝试使用ajax提交表单,以便在同一页面(http://www.fischer-club.ch/index.php/langschiffrennen/anmeldung)上获得php答案。我正在使用helix 3框架在joomla中工作,jquery版本是1.12.4。螺旋3框架使用Bootstrap 3。 这是我加载的脚本:

jquery.min.js?946c71418cf2f59c7cca40b0f1100272
jquery-noconflict.js?946c71418cf2f59c7cca40b0f1100272
jquery-migrate.min.js?946c71418cf2f59c7cca40b0f1100272
caption.js?946c71418cf2f59c7cca40b0f1100272
shaper_helix3/js/bootstrap.min.js
shaper_helix3/js/jquery.sticky.js
shaper_helix3/js/main.js

表单首先通过php传递,而不是通过ajax传递,我真的不明白为什么(我从控制台得到没有错误)。我在不同的js脚本中有冲突吗?另外,引导弹出窗口在我的网站上不起作用。

HTML:

<div id="Response"></div>
<form id="AnmeldungLangschiff" action="/pathto/Anmeldung_Langschiff.php" method="POST">
<p><label>Name des Teams</label><input style="width: 300px;" placeholder="Teamname" type="text" name="team_name" required="" /></p>
<p><label>Teamverantwortlicher</label><input style="width: 300px;" placeholder="Vorname Name" type="text" name="teamverantwortlicher" required="" /></p>
<p><label>Email</label><input type="email" style="width: 300px;" placeholder="vorname.name@email.com" name="email_addresse" required="" /></p>
<p><label>Telefon</label><input type="tel" style="width: 300px;" placeholder="+41 79 444 44 44" name="telefon" /></p>
<p><label>Teilnahme an Training</label><br /><input type="radio" name="trainingsteilnahme" value="Ja" checked="checked" /> Ja<br /><label><input type="radio" name="trainingsteilnahme" value="Nein" /> Nein<br /></label></p>
<p><label>Kommentar<textarea style="width: 300px; height: 100px;" name="kommentar" maxlength="500"></textarea></label></p>
<p><button type="submit">Verschicken</button></p>
<p>&nbsp;</p>
</form>

Javascript:

<script type="text/javascript">
$(document).ready(function() {
var frm = $('#AnmeldungLangschiff');

    frm.submit(function (e) {

        e.preventDefault();

        $.ajax({
            type: frm.attr('method'),
            url: frm.attr('action'),
            data: frm.serialize(),
            success: function (data) {
                $( "#Response" ).html(data);
            },
            error: function (data) {
                $( "#Response" ).html(data);
            },
        });
    });
});
</script>

PHP:

<?php
/*
PHPMailer laden
*/
use PHPMailer\PHPMailer\PHPMailer;
require '/is/htdocs/www/PHPMailer/src/PHPMailer.php';

/*
Wem wird die Form per Email zugestellt?
*/
$empanger_email = 'anymail@gmail.com';

/*
Abholung der Forminformationen.
*/
$team_name = $_POST['team_name'] ;
$teamverantwortlicher = $_POST['teamverantwortlicher'] ;
$email_addresse = $_POST['email_addresse'] ;
$telefon = $_POST['telefon'] ;
$trainingsteilnahme = $_POST['trainingsteilnahme'] ;
$kommentar = $_POST['kommentar'] ;

/*
Verschicken der Email.
*/

$mail = new PHPMailer();
$mail->setFrom('anymail@fischer-club.ch');
$mail->addAddress($empanger_email);
$mail->Subject = 'Anmeldung';
$mail->isHTML(true);
$mail->Body = 'Ciao Seba<br>
Du hast eine Anmeldung zum Langschiffrennen erhalten:<br>
Name des Teams: ' . $team_name . ' <br>
Teamverantwortlicher: ' . $teamverantwortlicher . ' <br>
Email: ' . $email_addresse . ' <br>
Tel.: ' . $telefon . ' <br>
Teilnahme an Training: ' . $trainingsteilnahme . ' <br>
Kommentar: ' . $kommentar . ' <br>
Yves';

if (!$mail->send()) {
    echo "Error";
} else {
    echo "Message sent!";
}

?>

1 个答案:

答案 0 :(得分:0)

这是一个joomla问题!参见JQuery not working on Joomla 3。 在Joomla中,jQuery是通过jQuery命名空间而不是通过$访问的。