2011-01-22 20 views
6

Tek bir alıntı olarak belirtilmiş bir dizgi JavaScript dizgisi haline getirilmeden bir dizgeden düzgün şekilde kaçacak bir yardımcı işlev var mı?javascript için magento çıkış dizesi

Ben jsQuoteEscape biliyorum ama sadece tırnak kolları ve tedavi \ vermez n & \ r vb

yani benim dize 'satırı1 \ nlineb' (aralarında bir satır ile yani iki satır)

ise

ve ben görüntülenen içeriği geçecektir

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

kullanmak

var jsvar='line1 
line2'; 
Bir sözdizimi hatası olan

.

sayesinde Eyal

cevap

5

Evet

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

bu kodlama bir javascript dize olarak olmayan bir nesne dize veri türleri JSON kodlama bir yan etkisi mi, yoksa eğer eğer never been clear ettik gerçek, Hoyle Crockford JSON göre, bu yüzden her zaman etrafında

$o = new stdClass(); 
$o->param = 'This is my 
Param';   
$json = json_encode($o);    
echo 'var data = ' . $json . ';' . "\n"; 
echo 'var jsdata = data.param'; 
onları geçerken bir nesne benim dizeleri sarmak ister

Bunu nasıl javascript ile halledersiniz. Bunun için özel olarak inşa edilmiş bir yöntem yoktur. Eğer bir blok temin var sen yardımcı yöntemleri görmeye ilgileniyorsanız,

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

yöntemleri ödeme ve daha yüksek zincirin yukarı bir bloğun parçası olan bir şablonla uğraşıyoruz eğer olsun onun Ben kendi Q cevap olarak sınıf ve sonra, tanımı olsa

var_dump get_class($this); 
+0

kontrol bir dize json olarak bu çok fazla bir bit olduğunu bir his var nitelemek görünmüyor. (en azından javascript tarafındaki ek yük açısından. json_encode'u nesne olmayan bir nesneyle çağırmaktan endişe ediyorsanız, dizeyi bir dizide tek bir üye olarak geçirmeyi tercih ediyorum ve sonuçtan bir şeyleri kırpıyorum. ilk [[ve herhangi bir şeyden sonuncuya kadar] ve dahil olmak üzere. Bu sonuç, tam olarak ne istediğinizi ve daha fazlası ile JS ile sonuçlanır. Pratikte, bir şey (muhtemelen) çok yaygın olduğundan şüphe duyuyorum. – epeleg

+0

Yani, , Mage :: helper ('core') -> jsonEncode ($ string) 'ile veya" json_encode ($ string) 'ile" "ile gidersiniz? Bir yandan daha kısa olduğu gibi ve daha az yükü var gibi görünüyor daha iyi olur. (İkincisinin PHP'nin bir parçası olduğunu mu varsayıyorum? Ya da değil mi?). – epeleg

+0

Muhtemelen haklısınız, her seferinde kendime "Beklenmedik kenar vakaları olmayacak bu basit ip dizisini yazacağım" dediğim halde, uçurumlarda ısırıldım. Bundan dolayı, herhangi bir dinamik JS varsayı geçme alışkanlığından, yukarıda belirtildiği gibi json olarak geçtim. –