Beste leden,


Graag had ik wat advies van jullie over het volgende.
Via een formulier wil ik een email kunnen sturen met een vaste opmaak (template).
In het formulier word gebruik gemaakt van een input email adres (waar de email naar toe moet) en nog een variabele waarde die terug moet komen in de template. Daarnaast wil ik een terug koppeling op de pagina dat het gelukt is.

Het formulier en de ajax call functie heb ik volledig af en wil nu graag weten wat nu de handigste afhandeling is.

Met vriendelijke groet,

Jop
@Jop B
Indien je een HTML e-mail verstuurt, gelden hier (en eigenlijk in elke context) dezelfde regels: zorg ervoor dat je je invoer escaped binnen de context waarin je werkt. Je wilt waarschijnlijk niet dat mensen HTML of JavaScript in kunnen vullen en dat dat dan ook als zodanig behandeld wordt wanneer het wordt getoond aan een lezer.
De platte code werkt, zodra de functie word uitgevoerd krijg ik de mail zoals het zou moeten :)
Nu heb ik de html gekoppeld met de ajax functie en daar gaat het weer mis. Zodra submit is geklikt gebeurt er niets.

<from id="forma">
<input type="email" name="email"></input>
<button name="submit" class="" id="send" type="submit">Send</button>
</form>
$.ajax({
	type: "POST",
        'url': 'test.php',
	'data': $('#forma').serialize(),
}
});



<?php

//init variables
$to = "";
$subject = "";


$to = $_POST["cust_e-mail"];
$subject = 'onderwerp';
$content = file_get_contents("template.html");

$content = str_replace("%brand%", $brand, $content);

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: Afzender <[email protected]>' . "\r\n";

mail($to, $subject, $content, $headers);
}

?>

:D

Er staat <from id="..."> in plaats van <form id="...">.

Iets te lang met mail bezig geweest? ^^
Of is dit een typefout in je snippet?

Er is ook geen veld cust_e-mail, in het bovenstaande formulier staat enkel name="email".

Je hoeft overigens voor self-closing tags zoals input geen </input> toe te voegen (en misschien is dat zelfs wel fout).

EDIT: ook moet er geen komma achter het laatste argument van je ajax call, dit is mogelijk een syntax fout.
EDIT: en de AJAX call moet overigens pas uitgevoerd worden als je het formulier submit... en niet direct...

Neem ff een rustpauze en drink een stevige kop koffie :).
FROM ???
<from id="forma">
Beste Thomas en SanThe,


From was een type fout :).

Na een kop koffie en een goede nachtrust heb ik nog eens gekeken maar kan geen error achterhalen.
Hier is de complete code:


<html>
<head>
<link rel="stylesheet" href="css/stylesheet.css"></link>
<script type="text/javascript" src="js/jquery 2.1.0 .js"></script>
</head>
<body>
<form id="forma" method="post">
<input name="email" type="text" id="cust_e-mail" placeholder="E-mailadres">
<button name="submit" class="" id="send" type="submit">Send</button>
</form>
 
<script>
$(document).ready(function(){
$("#forma").submit(function(e) {
e.preventDefault();
 
$.ajax({
                type: "POST",
               'url': 'test.php',
                'data': $('#forma').serialize()
});
});
});
</script>




<?php
 
//init variables
$to = "";
$subject = "";
 
$to = $_POST["email"];
$subject = 'Het onderwerp';
$content = file_get_contents("template.html");
 
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: Afzender <[email protected]>' . "\r\n";
 
mail($to, $subject, $content, $headers);

 
?>
Heb je al gedebugged met bijv. Firebug en gekeken naar je AJAX-request?
Ik zie dit nergens: #form_waranty
Het werkt :) bij de php code stond er een afsluiting die er niet thuis hoorde.



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
 
//init variables
$to = "";
$subject = "";
 
$to = $_POST["email"];
$subject = 'Het onderwerp';
$content = file_get_contents("template.html");
 
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: Afzender <[email protected]>' . "\r\n";
 
mail($to, $subject, $content, $headers);

}//deze stond er teveel 
?>



Dank voor het meedenken. Ben er te lang mee bezig geweest denk ik.
Blijkbaar worden er geen foutmeldingen weergegeven op jouw webserver. Dit kun je instellen.
Als je aan het ontwikkelen bent moeten die gewoon aanstaan.

Reageren