如何使用Apps脚本将JDBC mysql数据放入HTML Dropdown?

问题描述 投票:0回答:1

我正在设置一个HTML下拉菜单,显示来自我们Google Cloud SQL数据的项目。但是,我的代码有问题,无法解决。

这是我的代码:

CODE.GS

function doGet(e){
 var listfiltered = subjectfromDB(subjectdb)

  var tmp = HtmlService.createTemplateFromFile("page");
  tmp.listfiltered = listfiltered;

   return tmp.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME).setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL).addMetaTag('viewport', 'width=device-width, initial-scale=1');

}


function subjectfromDB(){

  var connectionName = 'xxxxxx';
  var user = 'xxxxx';
  var userPwd = 'xxxxx';
  var db = 'xxxxxx';
  var dbUrl = 'jdbc:google:mysql://' + connectionName + '/' + db;
  var conn = Jdbc.getCloudSqlConnection(dbUrl, user, userPwd);

  var start = new Date();
  var stmt = conn.createStatement();
  stmt.setMaxRows(1000);
  var results = stmt.executeQuery('SELECT SubjectName FROM Subject WHERE SubjectArchived != true');
  var numCols = results.getMetaData().getColumnCount();

  while (results.next()) {
    var rowString = '';
    for (var col = 0; col < numCols; col++) {
      rowString += results.getString(col + 1) + '\t';
    }
    Logger.log(rowString);
  }

  results.close();
  stmt.close();

  return rowString;

}

HTML

<select id="case1" name="case" class="validate browser-default" required>
            <option value="" disabled selected>Select Case</option>

           <? for (var i=0;i<listfiltered.length;i++){ ?>
           <option><?= listfiltered[i]; ?></option>

           <? } ?>

          </select>
          </div>

它仅返回下拉列表中的1个项目。顺便说一句,我在这里使用了谷歌应用程序脚本。

任何帮助将不胜感激。非常感谢!

OUTPUT

javascript html arrays google-apps-script jdbc
1个回答
0
投票

问题

仔细观察您的类型-subjectfromDB()返回一个String,然后通过listfiltered属性将其传递给模板。评估完模板后,您的循环将开始遍历listfiltered,这意味着它将遍历String中的每个字符

解决方案>>

var options = [];

while (results.next()) {
  var rowString = '';
  for (var col = 0; col < numCols; col++) {
    rowString += results.getString(col + 1) + '\t';
  }
  options.push(rowString));
}

results.close();
stmt.close();

return options;

Notes

  1. 在您的代码示例中,以subjectfromDB作为其第一个参数调用了subjectdb函数,但声明它不接受任何参数-请检查是否有意。
© www.soinside.com 2019 - 2024. All rights reserved.