2011-01-22 60 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