Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    148

    [jQuery]Proseguire se risponde un dato messaggio html

    Ciao a tutti,
    il titolo del post non è molto eloquente, cercherò di spiegarmi bene.
    Allora ho uno script in jquery e php per la validazione ed invio di una mail tramite la compilazione di un form.
    la parte php:
    Codice PHP:
    <?php
    $email 
    $_POST['email'];
    $nome $_POST['nome'];
    $telefono $_POST['telefono'];
    $commento $_POST['commento'];
    $id $_POST['id'];
    $tipo $_POST['tipo'];
    $acquisto $_POST['acquisto'];
    $oggetto "Richiesta di contatto";
    $to "prova1@prova.it";
    $html  "MIME-Version: 1.0\r\n";
    $html .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $html .= "From: <prova@prova.it>\r\n";
    $message ="<html><body> Hai ricevuto una richiesta di contatto da:[b] ".$nome;
    $message .="[/b]
     La sua mail è :[b] "
    .$email;
    $message .="[/b]
     Il numero di telefono è :[b] "
    .$telefono;
    $message .="[/b]
     Il testo della richiesta è : 
    [b] "
    .$commento;
    $message .="[b]
     "
    $tipo ." e ".$acquisto;
    $message .="[/b]
     Riferimento :[b] "
    .$id;
    $message .="[/b]
     Il link all'immobile è : <a href=\"http://192.168.0.2/scheda.php?id="
    .$id.">[url]http://192.168.0.2/scheda.php?id=[/url]".$id;
    $message .="</a></body></html>";
    if(
    $nome == "") {
            echo 
    "Inserire un nome.";
    }
    elseif(
    $email == "") {
            echo 
    "Inserire un indirizzo E-mail.";
    }
    elseif(!
    filter_var($emailFILTER_VALIDATE_EMAIL)) {
            echo 
    "Inserire un indirizzo E-mail valido.";
    }
    elseif (
    $telefono != "") {
            if(!
    is_numeric($telefono)) {
                    echo 
    "Il campo Telefono accetta solo numeri.";
            }
    }
    else {
            if(
    mail($to$oggetto,$message$html)){
                    echo 
    "Richiesta inviata correttamente.";
            }
            else{
                    echo 
    "Richiesta non ricevuta, prego riprovare.";
            }
    }
    ?>
    e la parte js:
    codice:
    $(document).ready(function(){
    $("#invia-contatto").click(function(){
    var nome = $("#nome").val();
    var email = $("#email").val();
    var telefono = $("#telefono").val();
    var commento = $("#commento").val();
    var id = $("#id").val();
    var tipo = $("#tipo").val();
    var acquisto = $("#acquisto").val();
    var datastr ='nome=' + nome + '&email=' + email + '&telefono=' + telefono + '&commento=' + commento + '&id=' + id + '&tipo=' + tipo + '&acquisto=' + acquisto;
    $("#response").css("display", "block");
    $("#response").html("<img src=\"../Img/ajax-loader2.gif\">Invio in corso... ");
    $("#response").fadeIn("slow");
    setTimeout("send('"+ datastr +"')",2000);
    return false;
    });
    });
    function send(datastr){
    $.ajax({
    type: "POST",
    url: "mail.php",
    data: datastr,
    cache: false,
    success: function(html){
    $("#response").fadeIn("slow");
    $("#response").html(html);
    setTimeout('$("#response").fadeOut("slow")',2000);
    setTimeout('$("#mail").fadeOut("slow")',3500);
    }
    });
    }
    Ed infine il form:
    codice:
    <div id="mail">
    <h2>Richiedi informazioni:</h2>
    <form id="formail" action="" method ="post">
    <div class="slider">
    <label for="nome">Nome </label>
    <input style="width: 323px;margin-left: 5px;color: #353535" class="validate(required)" type="text" name="Nome" id="nome" />
    </div>
    <div class="slider">
    <label for="email">E-mail </label>
    <input style="width: 323px;margin-left: 5px;color: #353535" class="validate(required, email)" type="text" name="E-mail" id="email" />
    </div>
    <div class="slider">
    <label for="telefono">Telefono (opzionale) </label>
    <input style="width: 323px;margin-left: 5px;color: #353535" type="text" name="Telefono" id="telefono" />
    </div>
    <div class="slider">
    <label for="commento">Commento (opzionale) </label>
    <textarea name="Commento" id="commento" rows="10" style="margin-left: 5px"></textarea>
    </div>
    <input type="hidden" id="id" value="<?php echo $array_dettagli['ID'];?>" />
    <input type="hidden" id="tipo" value="<?php echo $array_dettagli['Tipo'];?>" />
    <input type="hidden" id="acquisto" value="<?php echo $array_dettagli['Acquisto'];?>" />
    <input type="submit" value="Invia richiesta" id="invia-contatto" name="Invia richiesta" />
    </form>
    <div id="response">
     
    </div>
    </div>
    In pratica tramite lo script javascript comando l'invio e la ricezione dei dati al file php.
    Ho creato una serie di condizioni nel file php per la validazione dei dati, so che avrei potuto farlo direttamente nel file javascript, ma voglio sperimentare.
    Il problema è che, dato che alla fine del file javascript se l'operazione ha avuto successo e cioè se restituisce un messaggio, spariscono sia il messaggio che il div dove c'è il form.
    Volevo creare una condizione nel file javascript che dicesse: se il messaggio ricevuto dal file php è "Richiesta ricevuta correttamente." fai sparire sia la scritta che il div, altrimenti fai sparire solo la scritta.
    In "codice" una cosa del genere:
    codice:
    if($("#response").html.is("Richiesta inviata correttamente.") {
    setTimeout('$("#response").fadeOut("slow")',2000);
    setTimeout('$("#mail").fadeOut("slow")',3500);
    } else {
    setTimeout('$("#response").fadeOut("slow")',5000);
    }
    Così non funziona, ma essendo un neofita sicuramente sbaglio la sintassi, ma in giro non ho trovato alcuna info in merito.
    Potreste darmi una mano?
    Grazie ciao

  2. #2
    setTimeout('$("#response").fadeOut("slow")',2000);
    non capisco cosa stai facendo
    solitamente la risposta da php
    la hai in json (ad esempio fai restituire
    array('response'=>1) in caso di successo
    array('response'=>null) in tutti gli altri casi)
    ad ogni modo la sintassi giusta è

    Codice PHP:
    setTimeout(function(){ $("#response").fadeOut("slow"); },2000); 
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    148
    Molte grazie F@bius.
    Funziona perfettamente.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.