2012-09-19 3 views
0

jquery autocomplete 함수를 HtmlService 템플릿 내에서 작동 시키려고합니다. 내가 그것을 먹일 때 함수 내에 생성 된 배열이 예상대로 작동합니다. 아이디어는 ScriptDb에 데이터베이스에서 데이터를 제공하는 것입니다 나는 데이터베이스에서 배열을 반환하는 함수를 작성 (예상대로 배열을 반환) 한 :HtmlService : html로 가져온 후에 유형을 변경 하시겠습니까?

function doGet(e) { 
    var htmlTemplate = HtmlService.createTemplateFromFile('Search'); 
    htmlTemplate.diseases = ['aname','bname','cname','dname','ename','fname','gname']; 
    Logger.log(htmlTemplate.diseases instanceof Array); 
    return htmlTemplate.evaluate(); 
} 

로거는이 경우에 true를 돌려줍니다.

<!DOCTYPE html> 
<html> 
    <head> 
    <!-- <title>The Disease Database</title> --> 

    <meta name="author" content="M. Oranje" /> 
    <meta name="description" content="My personal disease database" /> 

    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script> 
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js"></script> 
    <link type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/themes/smoothness/jquery-ui.css" rel="Stylesheet" /> 
    </head> 
    <body> 

    <form action="https://script.google.com/macros/s/AKfycbxHmY6ejv8SnmnOupKKrieImaPTbCZAdtuQl_n8z78/dev" method="POST" id="diseases-form"> 

     <div id="page"> 

     <div class="search"> 
      <div class="name" name="name" id="name">Search</div> 
      <div class="search_input"><input name="search" id="search" type="text"></div> 
     </div> 

     </div> 

    </form> 
    <script> 
     $(function() { 
    var tags = <?= diseases ?>; 
     alert(tags instanceof Array); 
    $("#search").autocomplete({ 
     source: tags 
    }); 
    }); 
    </script> 

    </body> 
</html> 

경고는 false를 반환하고 배열 인쇄시 참조 오류 ('aname is not defined')가 반환됩니다.

답변

2

해결! 제대로 변환하려면 JSON.stringify()가 필요합니다.

$(function() { 
    var tags = <?!= JSON.stringify(diseases) ?>; 
    $("#search").autocomplete({ 
     source: tags 
    }); 
    }); 
관련 문제