Chiamare pagina php da javascript

mauriziom79

Nuovo Utente
19 Apr 2020
5
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
614
58
28
18
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
5
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
614
58
28
18
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
614
58
28
18
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
5
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: 171

Tommy03

Utente Attivo
6 Giu 2018
614
58
28
18
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
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 8
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 2
A Dare l'accesso ad una pagina solo ad un utente specifico PHP 0
F pagina dinamica PHP PHP 3
W Invio Dati ad un altra pagina Classic ASP 1
Samuele Ronzani Click e reload della pagina PHP 1
M Compilazione automatica campi in input stessa pagina PHP 0
C Statistiche pagina Facebook aziendale Social Media Marketing 2
L titolo del sito nella pagina di ricerca di google SEO e Posizionamento 2
MarcoGrazia Pagina canonical SEO e Posizionamento 0
elpirata Update dinamico informazioni scritte in una pagina php jQuery 11
K [CERCO] pagina Instagram Altri Annunci 0
C Vendo pagina FB Presentati al Forum 0
A [CERCO] Pagina Instagram Annunci servizi di Social Media Marketing 1
L Cerco pagina Instagram 1-2k Annunci servizi di Social Media Marketing 4
J creare pagina php di prenotazione PHP 5
Fendo59 Passare parametri con metodo POST a una pagina in un frame PHP 0
A Vendo pagina 8K Annunci servizi di Social Media Marketing 0
Michele95 vendo pagina instagram Annunci servizi di Social Media Marketing 1

Discussioni simili