2013-01-24 5 views
0

나는 똑똑한 배열 '데이터'를 검색하고 내가 자바 스크립트 변수 '저장'내부를 저장할 내부 중첩 된 유식과 구문 :올바른 자바 스크립트

{if isset({$data})} 
     <script type="text/javascript"> 
      var store = {ldelim}{rdelim}; 
      {foreach from=$data key=k item=v} 
       var index = {$k}; 
       store.index = {$v}; 
      {/foreach} 
       alert(store); 
     </script> 
    {/if} 

하지만 난 아무 경보 출력이 없습니다. 누군가 도울 수 있니?

RMK는 : 나는 VAR 저장소를 얻을, 기계가 소스 코드 = {}; 나는이

$("input").each(function(index) { 
        return this.value = store.index; 
       }); 

편집을 실행해야

+1

생성 된 코드는 어떻게 생겼습니까? – hank

+0

나는 상점에 정의 된 변수가 없다고 들었습니까 ?? – Newben

+0

페이지에서 "소스보기"를하면 어떻게 생성 된 자바 스크립트가 보이나요? 이 정보로 질문을 수정하십시오. – hank

답변

1

대신 스마티를 통해 자바 스크립트 객체/배열을 만들려고의 긴 읽기가 매우 어려운 길을가는,이 시도;

$arr = json_encode(array(array('key1' => 'value1'), array('key2' => 'value2'))); 
$smarty->assign('data', $arr); 

및 템플릿;

<script> 
var store = {$data}; 
</script> 

그래서 우리는 PHP가 우리를 위해 자바 스크립트 객체 유효한을 만들고 단순히 변수를 생성하고 해당 문자열을 할당 유식에 해당 문자열을 할당시키는 있습니다.

+0

감사합니다. 그렇지만 왜 내 코드를 읽지 못했을까요? – Newben

+0

$ 데이터 변수가 올바른 배열이 아니라고 추측합니다. – hank

-2

잘못된 태그를 작성했습니다. Smarty에서 JavaScript를 사용하려면 {literal} 태그를 사용해야합니다. exmaple를 들어

:

{literal} 
<script type="text/javascript" language="javascript"> 
// All your regular javascript code..... 
</script> 
{/literal} 
+0

당신은'{ldelim}'과'{rdelim} '을 사용하여 중괄호를 쓸 수 있습니다. – hank

+0

그건'{literal}'이하는 것이 아니기 때문에, 당신은 그 목적을 오해했습니다. 자바 스크립트를 사용하는 것은 필수적인 것은 아니며 * 자바 스크립트를 사용할 수 없습니다. – meagar

+0

까지 알고 계시다면 {리터럴} –

관련 문제