On 2/21/13 8:53 PM, oss wrote:
> Dato che a parole temo di non spiegarlo coi termini corretti, farᅵ
> direttamente un esempio.
> Del codice php legge il valore della variabile $opzione, che poi deve
> inizializzare una funzione js da eseguire sul client (mettiamo un
> semplice avviso).
I modi sono tanti. Puoi avere un file di configurazione siffatto:
var config = {
opzione1: "<?=$opzione1?>",
opzione2: "<?=$opzione2?>"
}
Tale file poi verrᅵ chiamato dalla pagina HTML in questo modo:
<script src="configuration.php"></script>
<script>
// Usa l'oggetto `config`
alert(config.opzione1);
</scrpt>
Piᅵ o meno il concetto ᅵ questo, per tenere separato il documento dai
valori di configurazione, e soprattutto non sporcare il codice JS che
potrᅵ comunque essere messo in un file esterno.
Generalmente questo va bene per valori di configurazione che possono
essere usati attraverso diverse pagine.
> Come fare? Ho pensato alle seguenti alternative in php:
>
> 1) echo "<script>alert('" . $opzione . "');</script>";
> ma qualcosa mi dice che ᅵ non ᅵ il massimo
Puoi fare anche cosᅵ, magari perᅵ associando tale valore a una variabile
JS in modo da non dover scrivere PHP ogni volta. ᅵ in pratica un
approccio similare a quello sopra, ma dove inietti i valori direttamente
nel documento.
> 2) echo "<script prop_opzione='" . $opzione . "'>// leggo il contenuto
A questo punto ᅵ preferibile usare i data-* attributes, che sono se non
altro validabili in HTML5:
<
http://html5doctor.com/html5-custom-data-attributes/>
> quindi... come fare?
Un altra soluzione ᅵ usare i cookie, che originariamente erano pensati
proprio per scambiare dati tra client e server: puoi impostare un cookie
in memoria nella risposta del server, che il client poi si legge tramite
`document.cookie`.
Oppure puoi usare tag HTML dove inserisci il contenuto, storicamente
questo era fato con `input` di tipo `hidden`:
<input id="my-option" value="<?=$opzione?>" type="hidden" />
Volendo, potrebbero essere anche in nodi HTML nascosti tramite CSS.
Insomma, le possibilitᅵ sono tante, e non le ho elencate nemmeno tutte,
dipende anche molto dal contesto in cui uno ᅵ.