Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Javascript - redirect post login e/o registrazione
Forum - Javascript - redirect post login e/o registrazione

Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 11:38
Sabato, 20/04/2013
Salve a tutti ragazzi ho un piccolo problema con uno script in js. In pratica vorrei che questi effettuasse un redirect verso una pagina x.php nel momento in cui l'inserimento dei dati tramite post ha riscontrato un esito positivo.
Posto il codice script.js
Codice sorgente - presumibilmente Javascript

  1. $(document).ready(function() {
  2.  
  3.                   //al click sul bottone del form
  4.                   $("#login").click(function(){
  5.  
  6.                         //associo variabili
  7.                         var mail = $("#mail").val();
  8.                         var password = $("#password").val();
  9.  
  10.                   //chiamata ajax
  11.                         $.ajax({
  12.  
  13.                          //imposto il tipo di invio dati POST
  14.                           type: "POST",
  15.  
  16.                           url: "modulo.php",
  17.  
  18.                          
  19.                           data: "mail=" + mail + "&password=" + password,
  20.                           dataType: "html",
  21.  
  22.                           //Inizio visualizzazione errori
  23.                           success: function(msg)
  24.                           {
  25.                                 window.location='user.php';
  26.                           },
  27.                           error: function()
  28.                           {
  29.                                 $("#error").html(msg);
  30.                           }
  31.                         });
  32.                   });
  33.                 });



Perché se scrivo
Codice sorgente - presumibilmente Plain Text

  1. success: function(msg)
  2.                           {
  3.                                 window.location='user.php'; ...


non reindirizza??? 8-|

Posto il codice modulo.php
Codice sorgente - presumibilmente Python

  1. <?php
  2. // select query per credenziali di accesso
  3.                                 $q = "  SELECT *
  4.                                                 FROM tab
  5.                                                 WHERE mail = '" . $mail . "'
  6.                                                 AND   pass      = '" . $pswd . "'
  7.                                          ";
  8.                                                          
  9.                                 $sql = mysql_query($q) or die(mysql_error());
  10.                                 $num_rows = mysql_num_rows($sql);
  11.                                                
  12.                                 // controllo l'esito: esiste una corrispondenza
  13.                                 if ($num_rows > 0) {
  14.  
  15.                                         // estraggo il valore dell'id_utente
  16. echo "Error";
  17.                                 }
  18. else {
  19.  
  20.  echo "Ok";
  21. }
  22. ?>


PM Quote
Avatar
tasx (Dev Team)
Expert


Messaggi: 439
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 13:21
Sabato, 20/04/2013

PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 17:41
Sabato, 20/04/2013
Ciao, inanzitutto ti ringrazio per la risposta, ma non ho capito cosa dovrei farmene di quel link. La funzione js che utilizzo per il redirect è corretta. In pratica mi spiego meglio. Mi serve un reindirizzamento alla pagina user.php solo se i dati inseriti sono corretti, altrimenti limita a stampare un messaggio di errore. Se nn sbaglio il tuo link reindirizza l'utente alla pressione del tasto button .. 8-|

PM Quote
Avatar
tasx (Dev Team)
Expert


Messaggi: 439
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 20:21
Sabato, 20/04/2013
Il link nella mia risposta era per farti vedere la procedura "standard" per fare un redirect, non so che browser tu stia usando ma
Codice sorgente - presumibilmente Plain Text

  1. window.location = 'url.php';


non viene gestito correttamente da tutti i browser quindi ti conviene provare con:

Codice sorgente - presumibilmente Plain Text

  1. window.location.href = 'url.php';



o con il metodo descritto nell'url di prima.... :k::k:

ciao

ps: qui trova qualche altra info: http://stackoverflow.com/questions/4818868/window-location ...

PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 20:26
Sabato, 20/04/2013
Caspiterina ...è veroooo!! Comunque ho un altro problema e cioè quello che reindirizza alla pagina user.php anche se i campi sono sbagliati invece di stamparmi un messaggio di errore 8-| ..idee a riguardo? Grazie ancora

PM Quote
Avatar
tasx (Dev Team)
Expert


Messaggi: 439
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 21:18
Sabato, 20/04/2013
Testo quotato

Postato originariamente da giocala88:

Codice sorgente - presumibilmente Plain Text

  1. [...]
  2.  
  3.                           //Inizio visualizzazione errori
  4.                           success: function(msg)
  5.                           {
  6.                                 window.location='user.php';
  7.                           },
  8.                           error: function()
  9.                           {
  10.                                 $("#error").html(msg);
  11.                           }
  12.                         });
  13.                   });
  14.                 });






il success e l'error non indicano l'esito della "logica" che sta nella pagina chiamata, ma indicano gli handler da chiamare nel caso la chiamata http... per implementare una sorta di feedback sull'operazione devi smenartela te ;)

Pui ad esmpio tornare un oggetto json e poi da javascript verficarne un campo se è uguale a 'yes' o ad 1 (è un esmepio puoi fare quello che vuoi...

esempio:
Codice sorgente - presumibilmente Javascript

  1. $success = "no";
  2. if ($num_rows > 0) {
  3.     $success = "yes";
  4.     echo json_encode($success);
  5. } else {
  6.     echo json_encode($success);
  7. }



sul client:
Codice sorgente - presumibilmente Javascript

  1. ....
  2. sucess: function(msg) {
  3.     if (msg.success === "yes") {
  4.          $("#error").html("errore!!");
  5.     }
  6. }
  7. ....



jquery automaticamente deserializza il json che ti arriva dal server e te lo passa nella variabile della funzione success(è per questo che posso scrivere: msg.success === "yes") il problema, e qui mi sorgono dubbi(è da molto tempo che non bazzico su php o e oramai molte cose le do per scontate), è che se jquery non si rende contro che i dati recuperati sono json li non te li deserializza e quindi la chiamata msg.success === "yes" sarà sempre false perchè msg.success è undefined...

quindi ti conviene googlare un po' per vedere come far comunicare php e jquery in modo che jquery capisca che è json.

ciao!

PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 18:35
Domenica, 21/04/2013
Allora ho fatto delle prove ma nada! Mi restituisce "Chiamata fallita, si prega di riprovare..." ...posto il codice

funzione js
Codice sorgente - presumibilmente Javascript

  1. $(document).ready(function() {
  2.  
  3.                   //al click sul bottone del form
  4.                   $("#login").click(function(){
  5.  
  6.                         //associo variabili
  7.                         var val1 = $("#val1").val();
  8.                         var val2 = $("#val2").val();
  9.  
  10.                   //chiamata ajax
  11.                         $.ajax({
  12.  
  13.                          //imposto il tipo di invio dati (GET O POST)
  14.                           type: "POST",
  15.  
  16.                           //Dove devo inviare i dati recuperati dal form?
  17.                           url: "script.php",
  18.  
  19.                           //Quali dati devo inviare?
  20.                           data: "val1=" + val1 + "&val2=" + val2,
  21.                           dataType: "json",
  22.  
  23.                           //Inizio visualizzazione errori
  24.                           success: function(msg)
  25.                           {
  26.                                 if(msg.data  === "ok") {
  27.                                        
  28.                                         window.location.href = 'url.php';
  29.                                 }
  30.                                 else {
  31.                                         $("#error").html(msg.data);
  32.                                 }
  33.                           },
  34.                           error: function()
  35.                           {
  36.                                 alert("Chiamata fallita, si prega di riprovare...");
  37.                           }
  38.                         });
  39.                   });
  40.                 });



lo script.php
Codice sorgente - presumibilmente Javascript

  1. <?php
  2.  
  3.         if(2 > 0) {
  4.        
  5.                 echo "{'data':'ok'}";
  6.         } else {
  7.        
  8.                 echo "{'data':'error'}";
  9.         }
  10. ?>



Che qualcuno mia iuti perfavore. grazie

Ultima modifica effettuata da giocala88 il 21/04/2013 alle 18:36
PM Quote
Avatar
tasx (Dev Team)
Expert


Messaggi: 439
Iscritto: 15/12/2008

Segnala al moderatore
Postato alle 20:08
Domenica, 21/04/2013
prova così:

Codice sorgente - presumibilmente Plain Text

  1. ...
  2.  
  3. data : {
  4.     val1: val1,
  5.     val2: val2
  6. }
  7. ...


PM Quote