在NATIVE模式下,表格不会发布

时间:2013-10-11 20:48:24

标签: google-apps-script

有人可以向我解释为什么以下代码在NATIVE沙盒模式下不会发布?当它处于EMULATED模式时,它可以工作。

Code.gs

function doGet(e) {
  var template = HtmlService.createTemplateFromFile('Index.html');
  template.action = ScriptApp.getService().getUrl();

  return template.evaluate().setSandboxMode(HtmlService.SandboxMode.NATIVE);
}

function doPost(e) {
  Logger.log("TESTING!");
}

的index.html

<form action="<?= action ?>" method="post">
  <label>Phone: <input type="text" name="phone"></label><br>
  <label><input type="submit"></label>
</form>

1 个答案:

答案 0 :(得分:2)

表单不会发布,因为它在caja sanatizing之后获得onsubmit='return false'属性。如果你删除它然后按预期工作:

您可以使用jQuery删除它,例如:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
  var form = $('#form');
  form.removeAttr('onsubmit');
</script>

经过测试和工作。完整的代码如下:

<强> Code.gs

function doGet(e) {
  var template = HtmlService.createTemplateFromFile('Index.html');
  template.action = ScriptApp.getService().getUrl();

  return template.evaluate().setSandboxMode(HtmlService.SandboxMode.NATIVE);
}

function doPost(e) {
  Logger.log(e);
  var template = HtmlService.createTemplateFromFile('thanks.html');
  template.phone = e.parameter.phone;
  return template.evaluate().setSandboxMode(HtmlService.SandboxMode.NATIVE);
  }

<强>的index.html

<form id='form' action="<?= action ?>" method="POST">
  <label>Phone: <input type="text" name="phone"></label><br>
  <label><input type="submit"></label>
</form>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
  var form = $('#form');
  form.removeAttr('onsubmit');
</script>

<强> thanks.html

<div>
Thanks,
You entered <?= phone ?>!
</div>