PDA

View Full Version : redirect in javascript


guido.d
10-09-2011, 19:31
nella mia file .php ho questo codice:

<?php
echo "
<li class=\"like\"><a href='' onClick=\"if(confirm('Vuoi davvero cancellare \'$titolopost\'? ')){cancellaarticolo($idp);
location.href='http://www.miosito.it/miapagina.php?parametro=$parametro'; }else{}\">Cancella</a></li>";}else{}\">Cancella</a></li>";
?>

Praticamente quando l'utente clicca su un link gli viene chiesta conferma se cancellare o no un testo da un database; se clicca su ok la funzione cancellaarticolo fa quello che deve fare (sicuro al 1000% che funziona) poi, in teoria, dovrebbe essere reindirizzato ad un altra pagina. Questo però non avviene.

le variabili php vengono stampate correttamente, la console degli errori non segnala niente. le virgolette sono a posto.

la funzione cancellaarticolo passa via ajax un parametro ad un altro file php che cancella dal database (e funziona).

cosa c'è che non va? anzichè essere reindirizzati alla pagina specificata viene aggiornata semplicemente la pagina stessa... è perchè prima della chiamata a location.href viene usato ajax?

Efem
11-09-2011, 10:18
nella mia file .php ho questo codice:

<?php
echo "
<li class=\"like\"><a href='' onClick=\"if(confirm('Vuoi davvero cancellare \'$titolopost\'? ')){cancellaarticolo($idp);
location.href='http://www.miosito.it/miapagina.php?parametro=$parametro'; }else{}\">Cancella</a></li>";}else{}\">Cancella</a></li>";
?>


A cosa serve l'else in rosso?
Può essere che l'errore sia lì?

guido.d
11-09-2011, 11:30
significa che se l'utente preme annulla nella finistrella che compare non deve essere eseguita nessuna istruzione... mettercelo o no non cambia niente... inoltre non ci sono errori di sintassi...

alemoppo
12-09-2011, 00:49
Occhio, che l'ultimo pezzo l'hai scritto due volte:
cancella l'ultima parte:
;}else{}\">Cancella</a></li>.

Poi, di solito ajax si usa per non far ricaricare tutta la pagina; ma se poi vuoi far ricaricare la pagina, tanto vale fare direttamente il redirect a:
location.href='cancella.php?id=$idp'
Poi, sarà la pagina cancella.php a fare il redirect alla pagina "http://www.miosito.it/miapagina.php?parametro=$parametro" (di solito, cambiando il parametro location nell'header della pagina).

Ciao!

guido.d
12-09-2011, 12:01
l'ultima parte nel file vero non è ripetuta, è stato un mio errore quando l'ho riportato sul forum... lo so che ajax serve x non fare ricaricare la pagina (infatti è proprio quello che non voglio) però succede! invece che essere eseguito il redirect la pagina viene ricaricata.

alemoppo
12-09-2011, 14:42
L'avevo immaginato; infatti ieri volevo editare...

Comunque, quindi in javascript sarebbe:


cancellaarticolo($idp);
location.href='http://www.miosito.it/miapagina.php?parametro=$parametro';

La location.href (penso) dovrebbe essere invocata dopo il completamento della richiesta fatta tramite ajax; quindi, se usi jQuery, prova a metterlo dentro "complete:"; se invece usi ajax nativo, prova a metterlo dentro l'if (quello che usi per controllare lo stato della richeista).

Comunque ripeto: non è meglio (e più semplice) inviare i dati direttamente alla pagina tramite una normale richeista (non ajax), per poi far effettuare il redirect alla pagina "miapagina.php" da php? (visto che comunque, dopo vuoi fare un redirect).

Ciao!

guido.d
13-09-2011, 16:39
problema risolto... il redirect non avviene in quanto l'oggetto cliccato è un link, e quindi il browser "segue" quello. se tolgo il link e metto l'onclick al <li> funziona tutto come dovrebbe.

alemoppo
13-09-2011, 20:48
Ok.

Comunque, nell'onclick, se metti alla fine "return false", dovrebbe funzionare...
Esempio:


<a href='#' onClick='funzione_ajax(); return false;'>click</a>


Ciao!