Ciao a tutti, avrei bisogno di un piccolo/grande aiuto, perchè non riesco a capire dove sbaglio. In pratica ho fatto un semplice form per inviare delle mail tramite php. Per renderlo un po' più accattivante ho aggiunto alcuni effetti tramite jquery. Nello specifico ho utilizzato ajax e il formato Json per dialogare con lo script php. Il problema risiede nella semplice dissolvenza del form per la durata della risposta. In effetti quando avviene l'invio dei dati il form si dissolve mostrando il messaggio di risposta ma non ricompare più. Questo mi andrebbe anche bene se non dovesi tenere conto degli eventuali errori di compilazione del form stesso. Percio' a me serve che si dissolva per il tempo di "elaborazione" dei dati e ricompaia con il messaggio di risposta.
Qualcuno sarebbe cosi' gentile da darmi un suggerimento sul da farsi? Grazie mille!
Di seguito il codice:
e jquerycodice:<form name="form" id="contactform"> <label for="name"><?php echo $lang['NAMEFORM']; ?></label> <input class="boxform" type="text" name="name"> </p> <label for="email"><?php echo $lang['EMAILFORM']; ?></label> <input class="boxform" type="text" name="email"> </p> <label for="message"><?php echo $lang['MESSFORM']; ?></label> <textarea class="boxform" name="message" maxlength="1000" cols="10" rows="6"></textarea> </p> <input type="submit" class="button" name="submit" value="<?php echo $lang['send']; ?>"> </form> [img]images/loading.gif[/img] <div id="result"></div>
codice:jQuery(document).ready(function(){ jQuery("#contactform").submit(function(){ jQuery.ajax({ type: "POST", url: "email.php", data: jQuery("#contactform").serialize(), dataType: "json", success: function(msg){ jQuery("#contactform").hide(); jQuery("#load").fadeIn(); jQuery("#result").removeClass('error'); jQuery("#result").addClass('success'); jQuery("#result").addClass(msg.status); jQuery("#result").html(msg.message); }, error: function(){ jQuery("#result").removeClass('success'); jQuery("#result").addClass('error'); jQuery("#result").html("Errore invio form. Riprova"); } }); return false; }); });
e php:
codice:<?php include ('lang.php'); // Get data $name = $_POST['name']; $email = $_POST['email']; $comment = $_POST['message']; // Test variables if ((isset($_POST['name']) && !empty($_POST['name'])) && (isset($_POST['email']) && !empty($_POST['email'])) && (isset($_POST['message']) && !empty($_POST['message']))) { $email_exp = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i"; if(preg_match($email_exp,$email)) { // Send Email $to = ' '; $subject = ' '; $message = " $comment "; $headers = "From: " . $email . "\r\n"; 'Reply-To: noreply@ localhost' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers); $lang['status'] = 'success'; $lang['message'] = $lang['sendmail']; $lang['message']; } else { $lang['status'] = 'error'; $lang['message'] = $lang['errormail']; $lang['message']; } } else { $lang['error'] = 'error'; $lang['message'] = $lang['errorform']; $lang['message']; } echo json_encode($lang); ?>

Rispondi quotando
, sono riuscito a risolvere. Molto probabilmente era una sciocchezza il problema che avevo, pero' per uno che sta imparando venirne a capo da solo..eh sono soddisfazioni.