hulp met samenwerking php/ jquery

Status
Niet open voor verdere reacties.

dudstone

Gebruiker
Lid geworden
14 nov 2011
Berichten
84
Goedendag,

ik heb al jarenlang een simpel klein contact formuliertje, maar wil deze graag wat uitbereiden. Daarom heb ik ervoor gekozen om een contact formulier te laten samen werken met jquery. Hiervoor heb ik het nodige hulp nodig.

Als volgt heb ik deze Jquery script:
Code:
$('.validate-form').submit(function(){
		var form = $(this);
		form.find('.required').parents('.row:eq(0)').removeClass('field-error');
		
		var field, v, id, msg, t, field_holder;
		var alert_msg = $('.msg-alert');
		var error = false;
		form.find('.required').each(function(){
			field = $(this);
			field_holder = field.parents('.row:eq(0)');
			v = $(this).val();
			t = $(this).attr('title');
			id = $(this).attr('id');
			
			if( $(this).hasClass('valid-email') ){
				if( /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(v) == false ) {
					error = true;
				}
			}else {
				if( v == '' || v == t ){
					error = true;
				}
			}
			
			if( error ) {
				field.addClass('field-error');
				alert_msg.fadeIn();
				//error_fields.push( field );
			}
		});
		
		if( !error ) {
		
			form.find('.required').removeClass('field-error');
			var data = {}
			
			form.find('.text-field').each(function(){
				data[ $(this).attr('name') ] = $(this).val();
			});
			
			form.find('.text-field').each(function(){
				$(this).val( $(this).attr('title') );
			});
			
			$('#message-field').val( 'Loading...' );
			
			$.post('send.php', data, function(){
				alert_msg.fadeOut();
				form.find('.msg-thanks').fadeIn(function(){
					
					$('#message-field').val( $('#message-field').attr('title') );
					
					window.setTimeout(function(){
						form.find('.msg-thanks').fadeOut();
					}, 5000);
					
				});
			});
		}
		
		return false;
	});

en de volgende html code:
HTML:
<form action="#" class="validate-form" method="post">
					
					
					<div class="row">
						<label>Voornaam<span>(verplicht)</span></label>
						<input type="text" id="fname-field" name="name" class="field required text-field" />
						<div class="cl">&nbsp;</div>
					</div>
					<div class="row">
						<label>Achternaam<span>(verplicht)</span></label>
						<input type="text" id="lname-field" name="lastname" class="field required text-field" />
						<div class="cl">&nbsp;</div>
					</div>
					<div class="row">
						<label>E-mail<span> (verplicht)</span></label>
						<input type="text" id="mail-field" name="email" class="field required valid-email text-field" />
						<div class="cl">&nbsp;</div>
					</div>
					<div class="row">
						<label>Onderwerp</label>
						<input type="text" id="company-field" class="field text-field required" name="onderwerp" />
						<div class="cl">&nbsp;</div>
					</div>
					<div class="row">
						<label>Bericht<span>(verplicht)</span></label>
						<textarea id="message-field" name="comment" class="field message required text-field" cols="100" rows="5"></textarea>
						<div class="cl">&nbsp;</div>
					</div>
					<div class="row">
						<input type="submit" class="submit-btn" value="Komt binnenkort" />
						<div class="cl">&nbsp;</div>
					</div>
				</form>

Ik heb in de php het volgende zitten. Let op dit kan helemaal fout zijn!
PHP:
<?php 
if ($_POST["email"]<>'') { 
	$ToEmail = 'info@excez.com'; 
	$EmailSubject = 'Contact formulier Excez Design'; 
	$mailheader = "From: ".$_POST["email"]."\r\n"; 
	$mailheader .= "Reply-To: ".$_POST["email"]."\r\n"; 
	$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
	$MESSAGE_BODY = "fname-field: ".$_POST["name"]."<br>"; 
	$MESSAGE_BODY .= "mail-field: ".$_POST["email"]."<br>"; 
	$MESSAGE_BODY .= "company-field: ".$_POST["onderwerp"]."<br>"; 
	$MESSAGE_BODY .= "message-field: ".nl2br($_POST["comment"])."<br>"; 
	mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure"); 
?>

Zou iemand mij hiermee kunnen helpen?
als ik op verzenden druk, staat er alleen maar: Loading...

alvast bedankt!

groet,

Rick Bongers
 
Volgens mij komt het omdat je post functie bij jquery een return verwacht van je php script.

echo (mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader))? 'okey' : "Failure";

En ik weet niet meer hoe, maar je moet de waarde die door het php script ge-output wordt opvangen en controleren wat het is.
In die geval okey of failure. Een aan de hand van die waarde laat je dan de loading verdwijnen en de boodschap op je scherm zetten met het resultaat van de actie.

Maar ff een note, Weet wel dat als iemand javascript in hun browser uit heeft staan jou hele script nix meer zal doen! Het beste is dat je als nog een action in je form zet die ook naar een pagina gaat die dan als nog je form voor je verwerkt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan