Error anomalo durante invio dati $.ajax

otto9due

Utente Attivo
22 Feb 2014
590
25
28
Sto letteralmente impazzendo.. Ecco l'anomalia:
Uso questo script per inviare alcuni dati ad una pagina php che ha il semplice compito di raccogliere questi dati ed inviare una semplice mail.
FUNZIONA TUTTO ( nel senso che la mail arriva, perfettamente compilata con tutti i valori, superando con successo i controlli impostati sui campi ), ma quando clicco sul button di invio, nonostante indati vengano passati, mi parte l'alert dell'errore impostato nella richiesta ovvero:
Codice:
error: function ()
                {
                    alert("Invio fallito, si prega di riprovare...");
                    return false;
                }
posto il codice ( qualora sia necessario anche la pagina in privato ).
Ringrazio per la gentile attenzione.
Codice:
/* Invio Prenotazione Mail */

jQuery(document).ready(function ($) {
    $(document).on('click','#invio',function () {
    //Imposto le variabili e recupero i valori
        var arrivo = $("input[type=date]#arrivo").val();
        var partenza = $("input[type=date]#partenza").val();
        var nomecognome = $("#nomecognome").val();
        var telefono = $("#telefono").val();
        var nadulti = $("input[type=number]#nadulti").val();
        var nbambini = parseInt($("input[type=number]#nbambini").val());
        var sEmail = $("#email").val();
        var age02 = parseInt($("input[type=number]#age02").val());
        var age315 = parseInt($("input[type=number]#age315").val());
        var age1617 = parseInt($("input[type=number]#age1617").val());
        var controllo = $("#controllo").val();
   
        // Funzione valido email
        function validateEmail(sEmail) {
            var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
            if (filter.test(sEmail)) {
                return true;
            } else {
                return false;
            }
        }
   
        // Funzione valido telefono
        function validateTel(telefono) {
            var filter = /^[\s\-?\(?\)?\+?[0-9]{1,}$/;
            if (filter.test(telefono)) {
                return true;
            } else {
                return false;
            }
        }
   
        // Funzione valido Nome e Cognome
        function validateName(nomecognome) {
            var filter = /^[\s*a-zA-Z]{1,}$/;
            if (filter.test(nomecognome)) {
                return true;
            } else {
                return false;
            }
        }
   
        // Funzione valido Bambini
        function validateBamb(age02, age315, age1617) {
            var sommatoriaBamb = age02+age315+age1617;
            if ( nbambini < sommatoriaBamb || nbambini > sommatoriaBamb ) {
                return false;
            } else {
                return true;
            }
        }

 
        //Controllo campi
        if (!validateEmail(sEmail))  {
       
            $('.errore-compilazione').text('Il campo mail è vuoto o non valido.');
            $(".errore-compilazione").slideDown("slow");
            return false;
       
        } else if (arrivo == "") {
       
            $('.errore-compilazione').text('Il campo arrivo non può essere vuoto.');
            $(".errore-compilazione").slideDown("slow");
            return false;
   
        } else if (partenza == "") {
       
            $('.errore-compilazione').text('Il campo partenza non può essere vuoto.');
            $(".errore-compilazione").slideDown("slow");
            return false;
   
        } else if (nadulti == "") {
       
            $('.errore-compilazione').text('Il numero degli adulti non può essere vuoto.');
            $(".errore-compilazione").slideDown("slow");
            return false;
   
        } else if (!validateName(nomecognome)) {
       
            $('.errore-compilazione').text('Il campo nome non può essere vuoto e può contenere solo lettere e spazi.');
            $(".errore-compilazione").slideDown("slow");
            return false;
   
        } else if (!validateTel(telefono)) {
       
            $('.errore-compilazione').text('Il campo telefono è obbligatorio ed accetta solo numeri, spazi, () e +.');
            $(".errore-compilazione").slideDown("slow");
            return false;
       
        } else if (!validateBamb(age02,age315,age1617)) {
       
            $('.errore-compilazione').text('Il numero dei bambini non coincide.');
            $(".errore-compilazione").slideDown("slow");
            return false;
       
        } else {
       
            $.ajax({
                type: "POST",
                url: "/landing/ppc-new/prenotazioni/mail_invio.php",
                data: "partenza=" + $.trim(partenza) + "&arrivo=" + $.trim(arrivo) + "&nomecognome=" + $.trim(nomecognome) + "&telefono=" + $.trim(telefono) + "&nadulti=" + $.trim(nadulti) + "&nbambini=" + $.trim(nbambini) + "&email=" + $.trim(sEmail) + "&controllo=" + $.trim(controllo) + "&age02=" + $.trim(age02) + "&age315=" + $.trim(age315) + "&age1617=" + $.trim(age1617),
                dataType: "html",
                success: function ()
                {
                    if($('div.errore-compilazione').css('visibility')=='hidden' || $('div.errore-compilazione').css('display')=='none'){
                            $("div#risposta-good").slideDown("slow");
                        return false;
                    }else{
                        $('div.errore-compilazione').slideUp("slow", function(){
                            $("div#risposta-good").slideDown("slow");
                        });
                        return false;
                    }
                },
                error: function ()
                {
                    alert("Invio fallito, si prega di riprovare...");
                    return false;
                }
            });
       
        }
   
    });
});

Ho provato a smontarlo e ridurlo ai minimi termini ma, la cosa strana è che non funziona neanche così... Ho allegato un'immagine del presunto errore..
Codice:
/* Invio Prenotazione Mail */

jQuery(document).ready(function ($) {
    $(document).on('click','#invio',function () {
    //Imposto le variabili e recupero i valori
        var arrivo = $("input[type=date]#arrivo").val();
        var partenza = $("input[type=date]#partenza").val();
        var nomecognome = $("#nomecognome").val();
        var telefono = $("#telefono").val();
        var nadulti = $("input[type=number]#nadulti").val();
        var nbambini = parseInt($("input[type=number]#nbambini").val());
        var sEmail = $("#email").val();
        var age02 = parseInt($("input[type=number]#age02").val());
        var age315 = parseInt($("input[type=number]#age315").val());
        var age1617 = parseInt($("input[type=number]#age1617").val());
        var controllo = $("#controllo").val();
         
            $.ajax({
                type: "POST",
                url: "/landing/ppc-new/prenotazioni/mail_invio.php",
                data: "partenza=" + $.trim(partenza) + "&arrivo=" + $.trim(arrivo) + "&nomecognome=" + $.trim(nomecognome) + "&telefono=" + $.trim(telefono) + "&nadulti=" + $.trim(nadulti) + "&nbambini=" + "&email=" + $.trim(sEmail) + "&controllo=" + $.trim(controllo),
                dataType: "html",
                success: function ()
                {
                 
                },
                error: function ()
                {
                    alert("Invio fallito, si prega di riprovare...");
                    return false;
                }
            });
         

     
    });
});
 

Allegati

  • asasas.jpg
    asasas.jpg
    109,2 KB · Visite: 309
Ultima modifica:

otto9due

Utente Attivo
22 Feb 2014
590
25
28
Aggiungo inoltre che anche provando in questo modo mi restituisce fail con questo errore "undefined" nell'alert, pur inviando i dati:
Codice:
        $.post("/landing/ppc-new/prenotazioni/mail_invio.php",
        {
                partenza: $.trim(partenza),
                arrivo: $.trim(arrivo),
                nomecognome: $.trim(nomecognome),
                telefono: $.trim(telefono),
                nadulti: $.trim(nadulti),
                nbambini: $.trim(nbambini),
                email: $.trim(sEmail),
                controllo: $.trim(controllo),
                age02: $.trim(age02),
                age315: $.trim(age315),
                age1617: $.trim(age1617)
        })
        .done(function() {
          if($('div.errore-compilazione').css('visibility')=='hidden' || $('div.errore-compilazione').css('display')=='none'){
                    $("div#risposta-good").slideDown("slow");
                return false;
            }else{
                $('div.errore-compilazione').slideUp("slow", function(){
                    $("div#risposta-good").slideDown("slow");
                });
                return false;
            }   
        })
        .fail(function(xhr, status, error) {
            alert(xhr.responseText);
        });
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
mi sono ripromesso di fare una prova anche se non ho ancora potuto,
ma fammi passare una domanda un po' stupida,
nello script "mail_invio.php" dopo aver inviato la mail,
cosa ritorni alla pagina per "soddisfare" l'attesa del risultato di Ajax ?
 

otto9due

Utente Attivo
22 Feb 2014
590
25
28
Innanzitutto grazie per la risposta :p
Nulla. Ma questo stesso script in un'altra pagina funziona, esattamente com'è e neanche li ho nulla che restituisce nulla.
Non ne capisco tantissimo di questo linguaggio, correggimi se sparo fesserie, ma in pratica il success non si attiva se la pagina viene trovata e vengono inviati i dati?
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
quando ho usato Ajax ho dovuto sempre restituire un dato altrimenti scattava il "timeout"
prova a restituire una stringa con un' echo (che poi non usi....)
 

otto9due

Utente Attivo
22 Feb 2014
590
25
28
E come si fa? ( perdona l'ignoranza )
Nell'altro script praticamente identico ho controllato ma non risulta nulla, neanche un echo. Anche l'altro script finisce con un semplice e banale invio mail..

Codice:
...
if(filter_var($email, FILTER_VALIDATE_EMAIL) && !empty($email)
        && isset($nomecognome) && !empty($nomecognome)
        && isset($arrivo) && !empty($arrivo)
        && isset($partenza) && !empty($partenza)
        && isset($nadulti) && !empty($nadulti)
        && isset($telefono) && !empty($telefono)
        && $controllo == ''            
   ){
    $msg->Send();
}

Ho provato a modificare così ma nulla..
Codice:
if(filter_var($email, FILTER_VALIDATE_EMAIL) && !empty($email)
        && isset($nomecognome) && !empty($nomecognome)
        && isset($arrivo) && !empty($arrivo)
        && isset($partenza) && !empty($partenza)
        && isset($nadulti) && !empty($nadulti)
        && isset($telefono) && !empty($telefono)
        && $controllo == ''              
   ){
    $msg->Send();
    echo 'Ok';
}else{
    echo 'No';
}

Ho provato a seguire un tutorial per inserire un echo che viene restituito nella funzione success tipo
success: function(data) ... ma nulla...
 
Ultima modifica:

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
PHP:
nello script php, prima della fine (chiusura) inserisci

echo "mail inviata";

che poi devi ritrovare nel log (o alert se preferisci)

success: function(response)
{
    console.log('risposta ricevuta : '+response);
},
 

otto9due

Utente Attivo
22 Feb 2014
590
25
28
Sisi fatto con .html() in un div che dovrebbe apparire se l'invio avviene ma nulla.. anche perchè mi parte proprio l'alert dell'invio errato che parte quando si aziona error.


Inviato dal mio iPhone utilizzando Tapatalk
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, cambia l'error cosi
Codice:
error: function (request, status, error) {
        alert(request.responseText);
    }
vedi se ti da qualche informazione in più
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
nello script php ho messo solo "error_log" scrivendo le variabili ed il loro valore nel log di php
ho messo i javascript (localizzati in fondo alla pagina) nello stesso folder della pagina (da download)
attivato console log
e tutto funziona,
Cattura.PNG
nel log di php ci sono variabili e valori per l'invio della mail
 

otto9due

Utente Attivo
22 Feb 2014
590
25
28
A me continua a non funzionare.. ho provato quanto suggerito da criric ma il risultato è stato quello che vedete nelle imm allegate.. Questi errori mi restituisce in consolle..
Magari a voi dicono qualcosa.

Marino non ho ben capito il tuo test che risultati ti da? Può essere colpa del server su cui è hostato il sito? Ho provato a spostarlo su un altro server ma la storia non cambia. Magari può essere la mail molto lenta nell'invio, so che è un problema noto del server in uso, quella non l'ho mai cambiata.
 

Allegati

  • error.png
    error.png
    10,3 KB · Visite: 345
  • imm3.png
    imm3.png
    39,8 KB · Visite: 331
  • immasas.png
    immasas.png
    24,6 KB · Visite: 347
  • test1.png
    test1.png
    35,6 KB · Visite: 313
Ultima modifica:

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
1) ho ripreso la pagina, ho messo in locale i js, ho messo dei "log" in scripts.js,
funziona correttamente, passa da "success" come registrato nell'immagine postata

2) ho messo uno sleep di 280 sec nel "mail_invio.php" per simulare un lungo ritardo nella risposta ma continua a funzionare,

non riesco a riprodurre l'errore
 

otto9due

Utente Attivo
22 Feb 2014
590
25
28
Io ho provato a cambiare mail e dominio, ho spostato tutto su un altro server cambiando mail ma nulla sembra una maledizione. ( uso php mailer ed invio con smtp, lo scrivo tante volte centrasse qualcosa ).


Inviato dal mio iPhone utilizzando Tapatalk
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
di nuovo scusa la banalità,
rimettendo tutto come in origine (primo post), hai provato ad usare un browser diverso tipo un ie per esempio ?
con quale risultato ?
 

otto9due

Utente Attivo
22 Feb 2014
590
25
28
No non ho ancora fatto questa prova. Lunedì mi rimetto sotto, sono partito per queste feste e non ho modo di fare prove. Grazie nel frattemo.


Inviato dal mio iPhone utilizzando Tapatalk
 

otto9due

Utente Attivo
22 Feb 2014
590
25
28
Ho fatto la prova con un browser diverso ed in questo caso non esce il messaggio di errore, ma neanche quello di successo.
 

otto9due

Utente Attivo
22 Feb 2014
590
25
28
Si. Come sempre la mail arriva ma questa volta non ricevo l'errore ma non ricevo neanche il success.
 

otto9due

Utente Attivo
22 Feb 2014
590
25
28
Questa mattina ho fatto un'altra prova. Pensavo che il formato data potesse influire sull'errore ho provato a sostituire ve variabili splittandole e poi ricomponendole dopo l'invio ma ancora nulla. La mail arriva come sempre ma l'errore NON riesco proprio a capire dove sta.
Codice:
var arrivo = $("input[type=date]#arrivo").val();
        var datanewx = arrivo.split('-'); 
        var datanew1 = datanewx[0];
                var datanew2 = datanewx[1];
                var datanew3 = datanewx[2];
        var partenza = $("input[type=date]#partenza").val();
        var datanewy = partenza.split('-'); 
        var datanew4 = datanewy[0];
                var datanew5 = datanewy[1];
                var datanew6 = datanewy[2];
        var nomecognome = $("#nomecognome").val();
        var telefono = $("#telefono").val();
        var nadulti = $("input[type=number]#nadulti").val();
        var bambini = parseInt($("input[type=number]#nbambini").val());
        var nbambini = parseInt((!isNaN(bambini) ? bambini : 0));
        var sEmail = $("#email").val();
        var age02 = parseInt($("input[type=number]#age02").val());
        var age315 = parseInt($("input[type=number]#age315").val());
        var age1617 = parseInt($("input[type=number]#age1617").val());
        var controllo = $("#controllo").val();

La cosa strana è che non funziona neanche :
Codice:
complete: function ()
                {  }
ed ho come l'impressione che si ricarichi la pagina..
 
Ultima modifica:

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
ti confermo che dopo la funzione Ajax, si ricarica la pagina (submit del form),
prova a sostituire "submit" con "button" e vedi l'effetto che fa,
HTML:
<button type="button" onclick="ga('send', 'event', 'Call To Action', 'Landing', 'Invio Richiesta Preventivo', '1')" class="btn" id="invio" >RICHIEDI PREVENTIVO</button>
 
  • Like
Reactions: otto9due
Discussioni simili
Autore Titolo Forum Risposte Data
S 404 Error " Page not Find" Error SEO e Posizionamento 0
L Error Code: 1215. Cannot add foreign key constraint MySQL 3
M HTTP Status 500 - Internal Server Error. Java 0
A Uncaught Error: jQuery 1
F Uncaught (in promise) Error: 3000ms timeout exceeded Javascript 0
U Campo vuoto data errore Fatal error: PHP 2
W ADODB.Recordset error '800a0bb9' Classic ASP 2
D error text in table HTML e CSS 11
W Microsoft OLE DB Provider for Visual FoxPro error '80040e14' Function name is missing ). Classic ASP 0
W Parse error: syntax error, unexpected '$result' (T_VARIABLE) PHP 4
W Errore di run-time di Microsoft VBScript error '800a0035' Impossibile trovare il file Classic ASP 0
I Fatal error: Query Failed! SQL: SELECT * INTO OUTFILE PHP 1
G Upload file error Apache 0
A Server Apache immagine not found (ERROR 404) Apache 5
L [PHP] Fatal error: Call to a member function prepare() on null in PHP 0
D [PHP] Fatal error: Class 'COM' not found in C:\..... PHP 6
T MySQL ERROR 1064 MySQL 1
T [PHP] aiuto....Fatal error: Uncaught Error:non riesco a capire PHP 1
T [PHP] ...Parse error che non c'è... PHP 7
C [PHP] Errore "Fatal error: Call to undefined function getTotalUsers()" PHP 2
V [MySQL] You have an error in your SQL syntax MySQL 1
G PHPMailer: SMTP error Gmail PHP 8
G [WordPress] [PHP] Parse error: syntax error, unexpected '$x332cbce1' WordPress 2
I [PHP] Login Facebook SDK returned an error: No URL set! PHP 0
bubino8 [PHP] Query syntax error PHP 6
J [PHP] Recoverable fatal error: PHP 4
momeraths [WordPress] cURL error: problema aggiornamento/installazione plugin WordPress 4
A [PHP] FPDF error: Some data has already been output, can't send PDF file PHP 5
J [PHP] fatal error PHP 1
N [PHP] problema Parse error in file configurazione PHP 3
F Console Error jQuery 1
C PHP errore Fatal Error: Allowed Memory Size of ... Bytes Exhausted PHP 7
K [ASP] Errore: ADODB.Field error '800a0bcd' Classic ASP 1
Z HTTP ERROR 500 - La pagina non funziona - Joomla! Joomla 0
U [PHP] Fatal error: Call to a member function Query() PHP 1
U [PHP] Parse error: syntax error, unexpected variabile (T_VARIABLE) PHP 8
C [PHP] internal error paypal PHP 6
ANDREA20 [PHP] syntax error, unexpected PHP 4
Fuego2806 [PHP] Errore 500 Internal Server Error - sito Joomla! Joomla 10
ANDREA20 [PHP] syntax error, unexpected T_ELSE [era]urgentissimo] PHP 15
A [PHP] syntax error, unexpected T_STRING su html PHP 11
Antoyosh Fatal error con Wordpress WordPress 5
C Errore 500 (internal server error) PHP 1
G Fatal error: Uncaught Error: Call to undefined method UserController PHP 0
G Parse error: syntax error, unexpected '=' PHP 2
O Fatal error: Call to undefined function testNome() in C:\xampp\...\...\index.php on line 51 PHP 4
gandalf1959 Parse error: syntax error, unexpected T_VARIABLE PHP 2
A 80004005 - Unspecified Error Web Server 0
JackIlPazzo Fatal error: Call to a member function execute() on a non-object PHP 2
Z Parse error: syntax error, unexpected 'parts' (T_STRING), expecting ',' or ';' PHP 2

Discussioni simili