PDA

View Full Version : [jQuery - php] Aggiornare pagina dopo richiesta AJAX


AMD_GO
13-04-2011, 09:53
Salve ragazzi, avrei una questione da porvi, più che altro un consigio/soluzione.
Sto sviluppando un plugin per phpBB, un forum open source.
Parte di questo plugin riguarda la votazione, da parte degli utenti, dei topic presenti nel forum.

La votazione è realizzata col sistema delle stelle (da 1 a 5): ho utilizzato jQuery per implementare la grafica e per fare la richiesta AJAX.
Il funzionamento è il seguente:
1) nel file.html ho un form con i radio button e il pulsante Submit per sottomettere il form ad una pagina file.php
2) nel file.js c'è:
a) la parte che "trasforma" i radio button in stelle;
b) la parte che gestisce la chiamata AJAX (tramite la funzione $.ajax() );

$.ajax({
.....
success: function(data, status, jqXML) {
// data sono i dati restituiti dalla pagina file.php (è una stringa che contiene html),
// che mi servono per modificare la pagina file.html in base a quello che è accaduto
},
.....
});

Ora il mio quesito è questo: siccome vorrei che si potesse votare anche con javascript disabilitato, il file file.php deve restituire degli output differenti a seconda che io stia utilizzando jQuery o meno.
Ecco, io ora vorrei un consiglio su come potrei far questo, cioè dire alla mia pagina file.php "ora sto utilizzando jquery quindi restituiscimi questo" oppure "ora non sto utilizzando jquery, quindi restituiscimi una pagina html completa". Oppure far restituire sempre la stessa pagina, e poi manipolare la variabile data (sempre che si possa)?

Voi come fareste? Io ho già pensato a delle soluzioni...

Una cosa, tanto per iniziare: come potrei manipolare i dati contenuti all'interno della variabile data, se questi sono in formato html???


Grazie mille a tutti!!!!

AMD_GO
14-04-2011, 09:30
UP! :mc: :mc: :cry: :cry:

alemoppo
15-04-2011, 12:25
Beh, dunque: iniziamo col dire che lato PHP non sai se l'utente ha abilitato/supporta JS, a meno che ad esempio non fai una pagina che invia un segnale tramite ajax (se il segnale lo ricevi ha js abilitato, altrimenti no)... {ma questa è una porcheria, IMHO}....

Quindi è bene agire lato client.

Una possibile soluzione è usare il tag html <noscript> in questo modo:


<script>
...
//stampi il form con il document.write('<form action="" ...');
...
</script>
<noscript><form action="" ...></noscript>


...poi tramite i form fai capire se ha js settato o meno (con ajax devi comportarti diversamente dalla richiesta "normale").. ad esempio, mettendo un "flag" dentro il form del tipo:


...
document.write("<input type='hidden' name='javascript' value='abilitato'>");<!-- ovviamente puoi settare benissimo a 1 / 0, oppure quello che vuoi :P -->
...
<noscript>
...
<input type='hidden' name='javascript' value='disabilitato'><!--idem come sopra -->
...


Ciao!

black_wizard
15-04-2011, 14:56
senza offesa ma chi ormai non ha il java abilitato?:confused:

alemoppo
16-04-2011, 15:37
Credimi che c'é gente che naviga per internet con js disabilitato... (principalmente per paura di virus, pubblicità e/o popup).

Ciao!