Beste,

Bij het correct invullen van het contactformulier zou ik de klant willen doorsturen naar een bedankingspagina. (zo kan ik ook een doel instellen via Google Analytics).
Dit lukt me voorlopig niet. Contactformulier waarmee ik werk stuurt nu een echo berichtje bij het al dan niet correct invullen. Het doorsturen naar een bedankingspagina lukt me niet, heb al geprobeerd met header('Location: http://www.mijnsite.be/bedankt.html';); zonder succes.

contact.php:

<?php 
	if($_POST) {

		$to = "[email protected]"; // Your email here
		$subject = 'Bericht verstuurd van mijn site'; // Subject message here

	}

    //Send mail function
	function send_mail($to,$subject,$message,$headers){
		if(@mail($to,$subject,$message,$headers)){
			header('Location: http://www.mijnsite.be/bedankt.html');
			exit();
		} else {
			echo json_encode(array('info' => 'error', 'msg' => "Uw bericht is niet verzonden. Er is iets verkeerd gegaan. Probeer het nog eens."));
		}
	}	

	//Check e-mail validation
	function check_email($email){
		if(!preg_match("/^[_.\da-z-]+@[a-z\d][a-z\d-]+\.+[a-z]{2,6}$/i", $email)) {
			return false;
		} else {
			return true;
		}
	}

	//Get post data
	if(isset($_POST['name']) and isset($_POST['mail']) and isset($_POST['onderwerp']) and isset($_POST['comment'])){
		$name 	 = $_POST['name'];
		$mail 	 = $_POST['mail'];
		$onderwerp 	 = $_POST['onderwerp'];
		$website  = $_POST['website'];
		$comment = $_POST['comment'];

		if($name == '') {
			echo json_encode(array('info' => 'error', 'msg' => "Gelieve uw naam in te vullen."));
			exit();
		} else if($mail == '' or check_email($mail) == false){
			echo json_encode(array('info' => 'error', 'msg' => "Gelieve een geldig emailadres in te vullen."));
			exit();
		} else if($onderwerp == ''){
			echo json_encode(array('info' => 'error', 'msg' => "Gelieve uw onderwerp in te vullen."));
			exit();
		} else if($comment == ''){
			echo json_encode(array('info' => 'error', 'msg' => "Gelieve uw bericht in te vullen."));
			exit();
		} else {

			//Send Mail
			$headers = 'From: ' . $mail .''. "\r\n".
			'Reply-To: '.$mail.'' . "\r\n" .
			'X-Mailer: PHP/' . phpversion();

			send_mail($to, $subject, $comment . "\r\n\n"  .'Naam: '.$name. "\r\n" .'Onderwerp: '.$onderwerp. "\r\n" .'Email: '.$mail, $headers);
		}

	} else {
		echo json_encode(array('info' => 'error', 'msg' => "Gelieve alle velden in te vullen."));
	}   

 ?>



Html code contactform:

               <form id="contact-form" method="post" action="contact.php">
                <div class="row contact-row">
                  <div class="col-md-6 contact-name">
                    <input name="name" id="name" type="text" placeholder="Uw naam*" required>
                  </div>
                  <div class="col-md-6 contact-email">
                    <input name="mail" id="mail" type="email" placeholder="Uw emailadres*" required>
                  </div>
                </div>
                <input name="onderwerp" id="onderwerp" type="text" placeholder="Onderwerp*" required> 
                <textarea name="comment" id="comment" placeholder="Uw bericht*" required></textarea>
                  <input type="submit" class="btn btn-lg btn-color btn-submit" value="Verstuur uw vraag" id="submit-message">
                  <div id="msg" class="message"></div>
                </form>


Bedankt alvast voor de hulp!
Lukt niet. Hij blijft steken op de witte contact.php pagina met enkel de succes message.
Mag ik eens de bestanden doormailen naar jou? Zal misschien eenvoudiger zijn om te testen en probleem te vinden?
Ik doe niet aan mail, omdat we op een forum zitten.
Heb je geen testcase die we online kunnen zien? Mogelijk is er in de JavaScript debugger wel wat meer te zien.
Ik zie gewoon de letterlijke JSON-string. En dat hoort niet.
Dat komt omdat je een overrulende action="contact.php" hebt. Haal die eens uit je formulier.
Ik heb de action="contact.php" uit mijn formulier gehaald. Werkt niet. Nu krijg ik geen mails meer met de info uit mijn contactformulier.
Dan werkt je AJAX request of jQuery niet.
Iemand daar ervaring mee? Waar zou ik hiervoor hulp kunnen krijgen?
firebug klaagt over een missende ) achter een argument list op regel 504 van script.js

script.js wordt dus niet uitgevoerd, en dus wordt je form gewoon op de klassieke manier gepost naar contact.php (of wat er ook maar in action= staat)

[size=xsmall]Toevoeging op 17/01/2017 09:46:42:[/size]

KNIP
[size=xsmall]Toevoeging op 17/01/2017 09:55:12:[/size]

Maar het probleem waarover hij echt struikelt:

na de regels waar window.location = ... bedankt.html staat

na de else volgen 4 stuks }

Dat hadden er maar 3 moeten zijn.

[size=xsmall]Toevoeging op 17/01/2017 10:02:48:[/size]

Welke editor gebruik je om je script te bouwen?

In Netbeans staan in zo'n geval duidelijke waarschuwingen met rode blokjes en gele bordjes met uitleg
Formulier werkt nu.
Probleem zat idd enkel in het scripts.js bestand.
Bedankt allemaal voor de support. Ik ben terug iets wijzer geworden. :)

Dit is de juiste versie:


    var submitContact = $('#submit-message'),
    message = $('#msg');

  submitContact.on('click', function(e){
    e.preventDefault();

    var $this = $(this);
    
    $.ajax({
      type: "POST",
      url: 'contact.php',
      dataType: 'json',
      cache: false,
      data: $('#contact-form').serialize(),
      success: function(data) {

        window.location.href = 'http://www.mysite.be/bedankt.html';

        if(data.info !== 'error'){
          $this.parents('form').find('input[type=text],input[type=email],textarea,select').filter(':visible').val('');
          message.hide().removeClass('success').removeClass('error').addClass('success').html(data.msg).fadeIn('slow').delay(5000).fadeOut('slow');
        } else {
          message.hide().removeClass('success').removeClass('error').addClass('error').html(data.msg).fadeIn('slow').delay(5000).fadeOut('slow');
        }
      }
    });
  });
})(jQuery);

Ho even!!!!

Nu doe je het nog steeds niet goed. Je redirect nu in alle gevallen naar de bedankt-pagina. Ook als er een error optreedt in je validatie.

Erg verwarrend dus voor de bezoeker.

Zie mijn code elders in dit topic.

Reageren