Formulier afhandeling met template
Je gaf boven aan om een terug koppeling via json te maken.
Bedoel je daarmee dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<form id="keuze">
<input type="text" name="keuze">
<button type="submit">Zend</button>
</form>
<script>
$(document).ready(function(){
$("#keuze").submit(function(e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: "probeer.php",
data: $("#keuze").serialize(),
'dataType': 'json',
'success': function(data) {
alert ('data.succes')
}
});
});
});
</script>
<input type="text" name="keuze">
<button type="submit">Zend</button>
</form>
<script>
$(document).ready(function(){
$("#keuze").submit(function(e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: "probeer.php",
data: $("#keuze").serialize(),
'dataType': 'json',
'success': function(data) {
alert ('data.succes')
}
});
});
});
</script>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
//init variables
$to = "[email protected]";
$subject = "Keuze";
$keuze = $_POST["keuze"];
$content = file_get_contents("template.html");
$content = str_replace("%keuze%", $keuze, $content);
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: Van mij <[email protected]>' . "\r\n";
mail($to, $subject, $content, $headers);
$success = mail(Wat moet ik hier neerzetten?);
header('Content-Type: application/json; charset=UTF-8');
echo json_encode($success);
?>
//init variables
$to = "[email protected]";
$subject = "Keuze";
$keuze = $_POST["keuze"];
$content = file_get_contents("template.html");
$content = str_replace("%keuze%", $keuze, $content);
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: Van mij <[email protected]>' . "\r\n";
mail($to, $subject, $content, $headers);
$success = mail(Wat moet ik hier neerzetten?);
header('Content-Type: application/json; charset=UTF-8');
echo json_encode($success);
?>
Gr. Yoeri
mail() retourneert een boolean (true of false) die aangeeft of het versturen van de mail is geslaagd (dit zegt dus niets over het succesvol ontvangen).
Regel 19 is dus een beetje loos? Je mailt daar nog een keer iets? Dit deed je al op regel 17, dus daar zul je, zoals ik al in mijn voorbeeld aangaf, zoiets moeten doen:
Op dit moment bestaat data.success (regel 17 van je JavaScript snippet) niet. Je hebt enkel de boolean die je teruggeeft - dit is "data", dus je zou zoiets kunnen doen:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
'success': function(data) {
if (data) {
// het versturen was succesvol, geef een bericht weer
} else {
// het versturen was niet succesvol, geef een bericht weer
}
}
if (data) {
// het versturen was succesvol, geef een bericht weer
} else {
// het versturen was niet succesvol, geef een bericht weer
}
}
Of je regelt dit al aan de code kant, door meer informatie terug te geven:
Code (php)
En vervolgens heb je in je callback function de beschikking over data.success (eerste array index) deze zou je kunnen gebruiken om je terugkoppelingstekst een opvallende opmaak te geven die aangeeft dat er iets mis was, en data.message (tweede array index) die je gebruikt om de terugkoppelingstekst weer te geven.
Gewijzigd op 10/03/2016 17:29:06 door Thomas van den Heuvel
Ben zelf ook wat aan het stoeien geweest:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
header('Content-Type: application/json; charset=UTF-8');
//init variables
$to = "[email protected]";
$subject = "Keuze";
$keuze = $_POST["keuze"];
$content = file_get_contents("template.html");
$content = str_replace("%keuze%", $keuze, $content);
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: Van mij <[email protected]>' . "\r\n";
$success = mail($to, $subject, $content, $headers);
$return = array(
'choise' => '$_POST["keuze"]',
);
echo json_encode($return);
?>
header('Content-Type: application/json; charset=UTF-8');
//init variables
$to = "[email protected]";
$subject = "Keuze";
$keuze = $_POST["keuze"];
$content = file_get_contents("template.html");
$content = str_replace("%keuze%", $keuze, $content);
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: Van mij <[email protected]>' . "\r\n";
$success = mail($to, $subject, $content, $headers);
$return = array(
'choise' => '$_POST["keuze"]',
);
echo json_encode($return);
?>
Het lijkt mij dat dit nooit goed gaat, dit geeft letterlijk '$_POST["keuze"]' terug, en niet de inhoud van $_POST['keuze']...
'choise' => "$keuze",
Nee, gewoon geen quotes. Werkt veel beter.
Gewijzigd op 11/03/2016 09:00:14 door - Ariën -