Formulier afhandeling met template

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Yoeri Achterbergen

Yoeri Achterbergen

10/03/2016 16:50:46
Quote Anchor link
Beste Thomas,

Je gaf boven aan om een terug koppeling via json te maken.
Bedoel je daarmee dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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);


?>



Gr. Yoeri
 
PHP hulp

PHP hulp

29/03/2024 14:16:24
 
Thomas van den Heuvel

Thomas van den Heuvel

10/03/2016 17:27:32
Quote Anchor link
Uhm, bijna.

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$success
= mail(...);
?>

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)
PHP script in nieuw venster Selecteer het PHP script
1
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
    }
}

Of je regelt dit al aan de code kant, door meer informatie terug te geven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$success
= mail(...);
if ($success) {
    $return = array(
        'success': true,
        'message': 'success bericht',
    );
}
else {
    $return = array(
        'success': false,
        'message': 'mislukt bericht',
    );
}

header('Content-Type: application/json; charset=UTF-8');
echo json_encode($return);
?>

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
 
Jop B

Jop B

10/03/2016 23:06:07
Quote Anchor link
Yoeri,


Ben zelf ook wat aan het stoeien geweest:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
'success': function(data) {
alert (data.choise);
}

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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);


?>
 
Thomas van den Heuvel

Thomas van den Heuvel

11/03/2016 00:10:36
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
'choise'  => '$_POST["keuze"]',

Het lijkt mij dat dit nooit goed gaat, dit geeft letterlijk '$_POST["keuze"]' terug, en niet de inhoud van $_POST['keuze']...
 
Jop B

Jop B

11/03/2016 01:39:19
Quote Anchor link
Dubble Quots? Php kan natuurlijk de variable meenemen aangezien die al gePOST is?

'choise' => "$keuze",
 
Ben van Velzen

Ben van Velzen

11/03/2016 01:52:40
Quote Anchor link
Nee, gewoon geen quotes. Werkt veel beter.
 
- Ariën  -
Beheerder

- Ariën -

11/03/2016 08:59:55
Quote Anchor link
En los daarvan is het correcte Engelse woord: choice.
Gewijzigd op 11/03/2016 09:00:14 door - Ariën -
 

Pagina: « vorige 1 2



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.