2011-01-22 106 views
6

是否有一个帮助函数,将正确地转义字符串以呈现为单引号引用JavaScript字符串文字?magento转义字符串为javascript

我知道jsQuoteEscape的,但它只能处理引号和不把\ n & \ r等

所以如果我的字符串为“行1 \ nlineb”(即两线与它们之间的换行符)

我用

var jsvar='<?php echo $this->helper('myextension')->jsQuoteEscape($mystring); ?>'; 

我会在呈现的内容

var jsvar='line1 
line2'; 

这是一个语法错误。

感谢, 的Eyal

回答

5

$string = 'Hello 
There';      
var_dump(Mage::helper('core')->jsonEncode($string)); 
var_dump(json_encode($string)); 

我已经never been clear如果这个编码一个非对象的字符串数据类型作为一个JavaScript字符串是JSON编码的副作用,或者如果它根据霍伊尔克罗克福德JSON,所以我总是喜欢把我的琴弦包裹在一个物体上时,通过它们周围

$o = new stdClass(); 
$o->param = 'This is my 
Param';   
$json = json_encode($o);    
echo 'var data = ' . $json . ';' . "\n"; 
echo 'var jsdata = data.param'; 

这就是你如何处理这与JavaScript。没有专门为此制作的方法。如果您有兴趣观察辅助方法你必须从一个块,结账的方法

app/code/core/Mage/Core/Block/Abstract.php   
app/code/core/Mage/Core/Block/Template.php   

,如果你正在处理一个模板,这是一个块越往上链的一部分,得到其然后检查它的定义

var_dump get_class($this); 
+0

虽然,我自己回答Q,字符串似乎不符合json的标准,但我觉得这有点太过分了。如果你担心用非对象调用json_encode,我个人更喜欢将字符串作为数组中的单个成员传递,然后从结果中删除任何上下文,并且包括第一个````和最后一个```后面的任何东西' 这个结果与JS完全是你想要的,而不是更多 为了实用,我怀疑是否有可能 – epeleg 2011-01-23 08:13:32