allora, ho fatto un pò di tests ... visto mai tornassero utili a qualcuno.
Per interagire tramite Ajaj (Asyncronous JavaScript and JSON) è indispensabile inviare il (o i) parametri dopo averli encodati con encodeURIComponent.
Per chi ancora avesse dubbi sul perchè escape non vada bene ho scritto sul mio blog un post apposito: http://webreflection.blogspot.com/20...omparison.html
Dall' altra parte, PHP, non serve a niente fare rawurldecode perchè il webserver (o il PHP) accetterà la variabile come UTF-8, quindi eventualmente l'unica cosa da fare se non si vuole usare la stringa in UTF-8 (query, cose in db, salvataggio su files, altro) è necessario solo trasformarla con
utf8_decode($_POST["parametro_ajaj"])
Per quanto riguarda l'invio da PHP a javascript in formato JSON non è necessario sfruttare rawurlencode perchè il JS leggerà la pagina e non una serie di coppie chiavi valore.
E' necessario però utilizzare utf8_encode qualora la codifica di default non sia UTF-8 al fine di permettere al JavaScript di interpretare correttamente anche i caratteri accentati o altro.
Ricapitolndo
JS -> PHP , formato JSON
variabile post o get in chiamata XMLHttpRequest verso pagina PHP
- utilizzare encodeURIComponent sia per le chiavi che per i valori
- in PHP utilizzare utf8_decode se non si usa la codifica UTF-8 per trattare le stringhe
- in PHP non è necessario (salvo configurazioni particolari) utilizzare rawurldecode
PHP -> JS , formato JSON
- utilizzare utf8_encode($stringa_JSON) in output, in caso sarebbe meglio, ma non è indispensabile, mettere anche l'header text/plain con charset utf-8 (ma funziona lostesso)
- non è necessario utilizzare rawurlencode, se lo si utilizza in javascript bisogna usare decodeURIComponent ma in questo modo si ingigantisce solo l'output in uscita
- in JavaScript non è necessario fare niente, le stringhe saranno compatibili ed i caratteri rispettati
![]()


Rispondi quotando