giocala88 (Normal User)
Expert
Messaggi: 248
Iscritto: 23/04/2008
|
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 |
$(document).ready(function() { //al click sul bottone del form $("#login").click(function(){ //associo variabili var mail = $("#mail").val(); var password = $("#password").val(); //chiamata ajax $.ajax({ //imposto il tipo di invio dati POST type: "POST", url: "modulo.php", data: "mail=" + mail + "&password=" + password, dataType: "html", //Inizio visualizzazione errori success: function(msg) { window.location='user.php'; }, error: function() { $("#error").html(msg); } }); }); });
|
Perché se scrivo
Codice sorgente - presumibilmente Plain Text |
success: function(msg)
{
window.location='user.php'; ...
|
non reindirizza???
Posto il codice modulo.php
Codice sorgente - presumibilmente Python |
<?php // select query per credenziali di accesso $q = " SELECT * FROM tab WHERE mail = '" . $mail . "' AND pass = '" . $pswd . "' "; $sql = mysql_query($q) or die(mysql_error()); $num_rows = mysql_num_rows($sql); // controllo l'esito: esiste una corrispondenza if ($num_rows > 0) { // estraggo il valore dell'id_utente echo "Error"; } else { echo "Ok"; } ?>
|
|
|
tasx (Dev Team)
Expert
Messaggi: 439
Iscritto: 15/12/2008
|
|
|
giocala88 (Normal User)
Expert
Messaggi: 248
Iscritto: 23/04/2008
|
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 ..
|
|
tasx (Dev Team)
Expert
Messaggi: 439
Iscritto: 15/12/2008
|
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 |
window.location = 'url.php';
|
non viene gestito correttamente da tutti i browser quindi ti conviene provare con:
Codice sorgente - presumibilmente Plain Text |
window.location.href = 'url.php';
|
|
|
giocala88 (Normal User)
Expert
Messaggi: 248
Iscritto: 23/04/2008
|
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 ..idee a riguardo? Grazie ancora
|
|
tasx (Dev Team)
Expert
Messaggi: 439
Iscritto: 15/12/2008
|
Postato originariamente da giocala88:
Codice sorgente - presumibilmente Plain Text |
[...]
//Inizio visualizzazione errori
success: function(msg)
{
window.location='user.php';
},
error: function()
{
$("#error").html(msg);
}
});
});
});
|
|
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 |
$success = "no"; if ($num_rows > 0) { $success = "yes"; echo json_encode($success); } else { echo json_encode($success); }
|
sul client:
Codice sorgente - presumibilmente Javascript |
.... sucess: function(msg) { if (msg.success === "yes") { $("#error").html("errore!!"); } } ....
|
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! |
|
giocala88 (Normal User)
Expert
Messaggi: 248
Iscritto: 23/04/2008
|
Allora ho fatto delle prove ma nada! Mi restituisce "Chiamata fallita, si prega di riprovare..." ...posto il codice
funzione js
Codice sorgente - presumibilmente Javascript |
$(document).ready(function() { //al click sul bottone del form $("#login").click(function(){ //associo variabili var val1 = $("#val1").val(); var val2 = $("#val2").val(); //chiamata ajax $.ajax({ //imposto il tipo di invio dati (GET O POST) type: "POST", //Dove devo inviare i dati recuperati dal form? url: "script.php", //Quali dati devo inviare? data: "val1=" + val1 + "&val2=" + val2, dataType: "json", //Inizio visualizzazione errori success: function(msg) { if(msg.data === "ok") { window.location.href = 'url.php'; } else { $("#error").html(msg.data); } }, error: function() { alert("Chiamata fallita, si prega di riprovare..."); } }); }); });
|
lo script.php
Codice sorgente - presumibilmente Javascript |
<?php if(2 > 0) { echo "{'data':'ok'}"; } else { echo "{'data':'error'}"; } ?>
|
Che qualcuno mia iuti perfavore. grazie Ultima modifica effettuata da giocala88 il 21/04/2013 alle 18:36 |
|
tasx (Dev Team)
Expert
Messaggi: 439
Iscritto: 15/12/2008
|
prova così:
Codice sorgente - presumibilmente Plain Text |
...
data : {
val1: val1,
val2: val2
}
...
|
|
|