Sbagli concettualmente l'utilizzo del mio script.
Prima devi capire lo scopo di php e di javascript in generale come linguaggi.
Lo scopo finale del php in ambito web server è solitamente "sparare", "printate" codice html.
Il javascript invece viene eseguito dal client, quindi dal web browser, e non puoi semplicemente passare come fai tu una variabile php nel js.
esempio non puoi:
l'unico modo per passare una variabile è capire come funziona il caricamento di una pagina web.Codice PHP:<img onclick="loadme($var)"/> oppure <img onclick="loadme(<?php $var; ?>)"/>
1. il browser richiede al server una pagina.
2. se il web server riconosce che la pagina debba essere prima processata (esempio se è .php o .asp) vengono fatti tutti i calcoli, tutte le query e viene preparata una pagina html priva di codice php (prova a fare visualizza sorgente in una pagina php dopo che ha caricato noterai che tutto il codice php eseguito scompare lasciando nel codice solo i risultati dei vari print e echo)
3. la pagina viene inviata la client che se la carica dovutamente
4. il codice js, gli eventi del mouse etc vengono eseguiti.
dove risiede il problema?
Il problema è che tu non puoi semplicemente fare
perchè così facendo non passi al js il contenuto dell' array php come potresti pensare, ma l'output di echo $ar; quindi Array().Codice PHP:<?php
$ar=array(1,2,3,4,5);
echo "<img onclick='funzionemia($ar)'/>";
?>
in definitiva una volta caricata la pagina avrai
che per javascript nulla vuol dire, non gli stai passando nessun valore.Codice PHP:<img onclick='funzionemia(Array())'/>
Cosa fa quindi la funzione che avevo scritto?
utilizzo:Codice PHP:function arTojsar($ar)
{
$jsar="[";
foreach ($temp as $t)
{
if(is_string($t))$jsar.="'$t',";
else $jsar.="$t,";
}
$jsar=substr($jsar,0,-1)."]"; //tolgo la virgola alla fine e chiudo l'array
return $jsar;
}
C'è da dire che questo sistema o funzione, restituisce una STRINGA non un array,Codice PHP:$ar=array(1,2,"tre",4,5); //creo un array, non supporta gli array associativi, o almeno, ne perde le chiavi (si dovrebbe usare un'altra sintassi)
$jsar=arTojsar($ar);
//adesso, facendo
echo $jsar; //restituisce [1,2,'tre',4,5] questo è il sistema con cui si definiscono gli array in js
//adesso, avendo
echo "<img onclick='funzionemia($jsar)'/>"; //mi da come output <img onclick='funzionemia([1,2,'tre',4,5])'/>
//quindi passerà un vero array js costruito da quello php
quindi è ovvio che se dato l'array
array("gennaio","febbraio","marzo");
restituisce la stringa ['gennaio','febbraio','marzo']
echo $jsar[0]; //stampa il primo carattere della stringa cioè [
echo $jsar[1]; //stampa il secondo carattere della stringa cioè '
echo $jsar[2]; //stampa il terzo carattere cioè g
echo count($jsar); conta gli elementi della variabile e li stampa, quindi 1
senza a capi quindi ['g1
Spero di essere stato chiaro, e scusa se ti sono sembrato arrogante, ma volevo spiegare bene questo concetto, fammi sapere

Rispondi quotando