Chiamare pagina php da javascript

mauriziom79

Nuovo Utente
19 Apr 2020
6
1
3
Ciao , sono nuovo del forum e non faccio il programmatore . Ho una pagina nuovoallievo.php che dopo l'inserimento in un input 'cf' delform tramite javascript controlla l'esattezza del codice fiscale se il risultato è corretto tramite $.ajax chiamo una pagina cf.php che controlla se il codice fiscale è già presente nel database , se il codice fiscale non è presente continua con il form nella pagina nuovoallievo.php , e fin qui tutto ok , il mio problema e che se il codice fiscale e' già presente nel database dovrei aprire un altra pagina allievo1.php , ma a questo punto mi stampa i risultati della pagina allievo1.php nella pagina nuovoallievo.php e questo che vorrei evitare quindi secondo me il problema sta nella chiamata $.ajax che dovrebbe essere fatta in altro modo.

codice nuovoallievo.php
Codice:
<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>NUOVO ALLIEVO</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
<meta charset="UTF-8">
<script src="./jquery/jquery-3.1.1.min.js"></script>
</head>
<body>
<script language="javascript">
function validaCf(v)
{
 
   var cf=v.value;
 
   if(validaCodiceFiscale(cf)==true)
   {
     $(document).ready(function() {
   var cf =$("#cf").val();
    $.ajax({                 
    url:("./cf.php"),
    method:"POST",
    data : {cf:cf},
    success:function(data){
     $("#risposta").html(data);      // il mio problema credo che sia questo ho provato anche a togliere success: ma non fa nulla
    }
 });
});
}
   else
   {
   alert('Codice Fiscale '+v.value+' non valido!');
   }
}
function validaCodiceFiscale(cf)
 {
     var validi, i, s, set1, set2, setpari, setdisp;
     if( cf == '' )  return '';
     cf = cf.toUpperCase();
     if( cf.length != 16 )
         return false;
     validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
     for( i = 0; i < 16; i++ ){
         if( validi.indexOf( cf.charAt(i) ) == -1 )
             return false;
     }
     set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
     set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
     setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
     setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
     s = 0;
     for( i = 1; i <= 13; i += 2 )
         s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
     for( i = 0; i <= 14; i += 2 )
         s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
     if( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
         return false;
     return true;
 }

</script>

<form method="POST" name="NUOVOALLIEVO"  >

<div class="DATI"><h1>NUOVO ALLIEVO</h1>
<div id="DATIPRINCIPALI">
COGNOME <input type="text" id= "cognome" name="cognome" maxlength ="50" size ="30" required />
NOME <input type="text" id="nome"  name="nome" maxlength ="30" size ="50" required />
CODICE FISCALE  <input onblur="javascript:validaCf(cf)"type="text" id ="cf" name="cf" maxlength="16" size="16"  // qua parte il controllo del codice fiscale
</div>

....

codice cf.php
Codice:
<?php
session_start();
require_once ("scuolacalcio.php");
$cf=$_POST['cf'];
        $query = "
            SELECT *
            FROM allievo
            WHERE CF =:cf
        ";
        
        $check = $pdo->prepare($query);
        $check->bindParam(':cf', $cf, PDO::PARAM_STR);
        $check->execute();
        
        
    
     $persona = $check->fetch(PDO::FETCH_ASSOC);
     if(empty($persona)==false){
     $id=$persona['IDALLIEVO'];
     $_SESSION['id']=$id;
        header('location:allievo1.php');
     }
    ?>

grazie anticipatamente
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
Premesso che non sono un esperto, in teoria il success di ajax stampa i valori che vengono messi con echo nel file php. Quindi io proverei a fare così:
nuovoallievo.php
HTML:
<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>NUOVO ALLIEVO</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
<meta charset="UTF-8">
<script src="./jquery/jquery-3.1.1.min.js"></script>
</head>
<body>
<script language="javascript">
function validaCf(v)
{
 
   var cf=v.value;
 
   if(validaCodiceFiscale(cf)==true)
   {
     $(document).ready(function() {
   var cf =$("#cf").val();
    $.ajax({                 
    url:("./cf.php"),
    method:"POST",
    data : {cf:cf},
    success:function(data){
if(data == "Nessun utente") {
     $("#risposta").html(data);
}else{
document.location="allievo1.php";
}
    }
 });
});
}
   else
   {
   alert('Codice Fiscale '+v.value+' non valido!');
   }
}
function validaCodiceFiscale(cf)
 {
     var validi, i, s, set1, set2, setpari, setdisp;
     if( cf == '' )  return '';
     cf = cf.toUpperCase();
     if( cf.length != 16 )
         return false;
     validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
     for( i = 0; i < 16; i++ ){
         if( validi.indexOf( cf.charAt(i) ) == -1 )
             return false;
     }
     set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
     set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
     setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
     setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
     s = 0;
     for( i = 1; i <= 13; i += 2 )
         s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
     for( i = 0; i <= 14; i += 2 )
         s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
     if( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
         return false;
     return true;
 }

</script>

<form method="POST" name="NUOVOALLIEVO"  >

<div class="DATI"><h1>NUOVO ALLIEVO</h1>
<div id="DATIPRINCIPALI">
COGNOME <input type="text" id= "cognome" name="cognome" maxlength ="50" size ="30" required />
NOME <input type="text" id="nome"  name="nome" maxlength ="30" size ="50" required />
CODICE FISCALE  <input onblur="javascript:validaCf(cf)"type="text" id ="cf" name="cf" maxlength="16" size="16"  // qua parte il controllo del codice fiscale
</div>
cf.php
PHP:
<?php
session_start();
require_once ("scuolacalcio.php");
$cf=$_POST['cf'];
        $query = "
            SELECT *
            FROM allievo
            WHERE CF =:cf
        ";
        
        $check = $pdo->prepare($query);
        $check->bindParam(':cf', $cf, PDO::PARAM_STR);
        $check->execute();
        
        
    if(($check->rowCount) >0){
     $persona = $check->fetch(PDO::FETCH_ASSOC);
     $id=$persona['IDALLIEVO'];
     echo $id;
     }else{
echo "Nessun utente";
}
    ?>
Sono alle prime armi quindi non farci molto affidamento...
 

mauriziom79

Nuovo Utente
19 Apr 2020
6
1
3
Grazie Tommy03 della risposta ho seguito il tuo suggerimento pero' ancora non va bene nel senso che c'è qualcosa che non va nel if della funzione success perchè mi apre la pagina allievo1.php sia che la risposta sia "Nessun utente" sia che il codice fiscale è presente nel database
Codice:
function validaCf(v)
{
 
   var cf=v.value;
 
   if(validaCodiceFiscale(cf)==true)
   {
     $(document).ready(function() {
   var cf =$("#cf").val();
    $.ajax({
    url:("./cf.php"),
    method:"POST",
    data : {cf:cf},
      success:function(data){
     if(data == "Nessun utente") {     // credo che il problema adesso sia questo
     $("#risposta").html(data);
     }
     else{
     document.location="allievo1.php";
     }
      }
 });
});
}

ho provato a togliere l'if e la risposta è esatta nel senso che se il codice fiscale non è presente scrive Nessun utente altrimenti mette l'id del utente presente
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
E se invece provi a mettere così cosa succede?
HTML:
if(data != "Nessun utente") {
document.location("allievo1.php");
}else{
document.location("prova.php");
}
 

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
È davvero strano. Quindi se non c'è nessun utente nel database stampa "Nessun utente"? Sicuro che non ci sia qualche errore di ortografia?
Giusto per capire di più problema, prova a mettere ad esempio un if che sei sicuro che sia vero e che quindi dovrebbe mandarti a prova.php
Esempio:
HTML:
if((data.lenght) > 10){
document.location("prova.php");
}
 

mauriziom79

Nuovo Utente
19 Apr 2020
6
1
3
Allora ho messo un alert e faccio stampare il risultato in entrambe i casi mette dei segni che non ho mai visto vicino al risultato
ti allego la cattura per questo l' if non funziona.
Codice:
success:function(data){
          alert (data);
     if(data == "Nessun utente") {
     $("#risposta").html(data);

     }
else{
document.location="allievo1.php";
 

Allegati

  • Cattura.PNG
    Cattura.PNG
    3,1 KB · Visite: 358

Tommy03

Utente Attivo
6 Giu 2018
616
58
28
20
Vicenza
A questo punto anche se è parecchio brutto così dovrebbe comunque funzionare:
HTML:
if(data.includes("Nessun utente")) {
document.location("prova.php");
}else{
document.location("allievo1.php");
}
 
  • Like
Reactions: mauriziom79
Discussioni simili
Autore Titolo Forum Risposte Data
P Chiamare pagina PHP con parametro da javascript Javascript 1
A Chiamare una specifica funzione in una pagina php PHP 1
S problemi jquery ajax chiamare una pagina php Ajax 5
Y Come chiamare una pagina al verificarsi di un evento? Javascript 4
T [ASP] Chiamare sub Classic ASP 4
JackIlPazzo Chiamare una funzione specifica di php da una richiesta ajax? PHP 2
neo996sps Chiamare route laravel con passaggio di dati tramite jquery jQuery 0
Jonn Redirect Doppio (si può chiamare così?) PHP 3
WorldWideWeb Chiamare i metodi di un controllo OCX Visual Basic 1
G [javascript]Chiamare funzione javascript per menù Javascript 2
I chiamare una funzione Javascript 2
coteaz chiamare php con javascript PHP 4
coteaz chiamare php con javascript Javascript 5
G Pagina html in stringa PHP 2
L Creare ancore interne alla pagina PHP 1
F Aiuto! cambio immagine di sfondo al cambio pagina HTML e CSS 2
Shyson Regex che trova la parola nella pagina jQuery 6
L Eliminazione di una pagina dalla gallery SEO e Posizionamento 0
D Apre il lightbox fuori pagina Javascript 0
K posizionare variabile da pagina html all'iframe. Javascript 1
R jquery che cambia css di un elemento non mi funziona sulla pagina caricata da ajax Ajax 5
U Link a pagina ed esecuzione file PHP 0
S Passare query o utm alla pagina successiva Domini 1
D [Cerco] Pagina Facebook settore calcio Annunci servizi di Social Media Marketing 0
napuleone div centrato alla pagina posto sopra ai contenuti HTML e CSS 1
G Eliminare l'effetto refresh di una pagina internet PHP 8
L Bing prima pagina prima riga; Google mi ignora SEO e Posizionamento 0
P Pagina modifica record che non funziona PHP 0
T Conferma reload pagina Javascript 4
A Submit senza ricaricare la pagina Ajax 2
L Problemi form Pagina php HTML e CSS 3
L php mysql cerca e visualizza pagina PHP 0
S Variabile in post su altra pagina PHP 2
D Visualizzazione pagina basata sul valore di un campo del database PHP 2
D Pagina non trovata Wordpress WordPress 7
E Pagina Cloudflare e captcha Domini 1
W Anomalia Pagina Facebook Social Media Marketing 9
A Aiuto per pagina php PHP 0
T Risolto Redirect a pagina esterna Javascript 2
M Questa pagina non carica correttamente Google Maps: aiuto!! HTML e CSS 1
T Offuscare link pagina web PHP 2
D Stampa a video in altra pagina html Database 3
Cosina script data aggiornamento pagina Javascript 1
Y cambiare sfondo di una pagina Javascript 1
Y Vorrei selezionare un colore di sfondo per una pagina web Javascript 0
S Apertura in una nuova pagina PHP 6
G creazione menu a tendina e invio a pagina php PHP 1
B Stampare una porzione della pagina PHP 0
D Pubblicità Instagram su pagina da 144 mila follower Vendere e Acquistare pubblicita' online 3
A Dare l'accesso ad una pagina solo ad un utente specifico PHP 0

Discussioni simili