Esiste una funzione di supporto che eviti correttamente una stringa da rendere come una virgoletta singola quotata stringa JavaScript letterale?magento escape string per javascript
io sappia jsQuoteEscape ma gestisce solo le citazioni e non tratta \ n & \ r ecc
quindi se la mia stringa è 'linea 1 \ nlineb' (cioè due linee con una nuova linea tra di loro)
e io uso
var jsvar='<?php echo $this->helper('myextension')->jsQuoteEscape($mystring); ?>';
mi metterò nel contenuto reso
var jsvar='line1
line2';
che è un errore di sintassi.
Grazie, Eyal
Anche se, come ho risposto sul tuo Q, una stringa non sembra qualificarsi come json ho la sensazione che questo è un po 'troppo. (almeno in termini di overhead sul lato javascript. Se ti preoccupi di chiamare json_encode con un non oggetto, preferirei personalmente passare la stringa come un singolo membro in un array e quindi ritagliare dal risultato qualsiasi cosa- Questo risultato con JS è esattamente quello che vuoi e niente di più Per essere pratico, dubito che qualcosa (probabilmente) così ampiamente usato sarebbe mai rotto – epeleg
Detto questo, andresti con 'Mage :: helper ('core') -> jsonEncode ($ stringa)' o con 'json_encode ($ stringa)'? Tendo a scegliere il secondo come si accorcia da una parte e sembra che abbia molto meno overhead quindi prestazioni wo stare meglio (Suppongo che il secondo sia solo una parte di PHP o no?). – epeleg
Probabilmente hai ragione, anche se ogni volta mi sono detto "scriverò semplicemente questa semplice sostituzione di corde che sicuramente non avrà casi limite inaspettati", finisco per essere morso dai casi limite. Per questo motivo ho preso l'abitudine di passare qualsiasi JS vars dinamico come per JSON, come sopra. –