0

jquery オートコンプリート関数を HtmlService テンプレート内で動作させようとしています。フィードすると、関数内で生成された配列が期待どおりに機能します。アイデアは、ScriptDb データベースからデータを提供することであり、データベースから配列を返す関数を作成しました (期待どおりに配列を返します)。

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();
}

この場合、Logger は 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>

しかし、ここで alert は false を返し、強制的に配列を印刷すると参照エラー ('aname is not defined') が返されます。

4

1 に答える 1

2

解決しました!正しく変換するには、JSON.stringify()が必要です。

$(function() {
    var tags = <?!= JSON.stringify(diseases) ?>;
    $( "#search" ).autocomplete({
      source: tags
    });
  });
于 2012-09-19T22:58:04.737 に答える