Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google应用程序脚本未接收多个复选框选择_Javascript_Jquery_Forms_Google Apps Script - Fatal编程技术网

Javascript Google应用程序脚本未接收多个复选框选择

Javascript Google应用程序脚本未接收多个复选框选择,javascript,jquery,forms,google-apps-script,Javascript,Jquery,Forms,Google Apps Script,我有一个接收表单数据的WebApp。部分数据来自复选框: <form id="intakeForm" class="labels-hidden-form custom-form" action="/new-patient-form/" enctype="multipart/form-data" novalidate="novalidate"> <input type

我有一个接收表单数据的WebApp。部分数据来自复选框:

<form id="intakeForm" class="labels-hidden-form custom-form" action="/new-patient-form/"
enctype="multipart/form-data" novalidate="novalidate">   
    <input type="checkbox" name="intake_symptoms" value="coughing">Coughing<br>
    <input type="checkbox" name="intake_symptoms" value="sneezing">Sneezing<br>
    <input type="checkbox" name="intake_symptoms" value="vomiting">Vomiting<br>
当I
console.log
上面的函数创建的对象时,它显示预期的:

症状:(2)[“咳嗽”、“呕吐”]

但是,当我从GAS和
控制台.log返回响应中的值时,它只显示第一个复选框

症状[]:“咳嗽”

这是我用来将提交的值发送回网页的代码

function doGet(e) {
  var params = e.parameter
  var result = {};
  try {
    result = {
      status: start(params),
      rawVals: params,
      errs: errors
    }
  } catch (f) {
    result.error = f.toString();
  }
  return ContentService     
  .createTextOutput(e.parameters.callback + '(' + JSON.stringify(result) + ')')
  .setMimeType(ContentService.MimeType.JAVASCRIPT);
}
我在这里不知所措。是否需要以其他方式将复选框值发送到脚本?

问题:
  • e.parameter
    仅返回第一个值
解决方案:
  • 改用
    e.参数
参考资料:
片段:
获取多个复选框

<script>
  function getCheckedBoxes(chkboxName) {
  var checkboxes = document.getElementsByName(chkboxName);
  var rowsToArchive = [];
  for (var i=0; i<checkboxes.length; i++) 
  {
     if (checkboxes[i].checked) 
     {
        rowsToArchive.push(Number(checkboxes[i].value));
     }
  }
  google.script.run
    .withSuccessHandler(setResponse)
    .archiveSelectedRows(rowsToArchive);
}
</script>

函数GetCheckedBox(chkboxName){
var复选框=document.getElementsByName(chkboxName);
var rowsToArchive=[];

对于(var i=0;值得一提的是,
e.parameters
将所有值作为
对象
而不是
字符串
(就像
e.parameter
那样)即使只有一个值…比如说来自标准文本输入。因此,如果进行任何进一步的操作,必须将其转换为字符串。
e.parameters.administration\u patient\u lname.toString().toUpperCase()
@Daveh0对象始终是一个数组,只要需要字符串,数组就会隐式转换为字符串。这是我所期望的,但正在尝试执行
e.parameters.intrance\u patient\u lname.toString().toUpperCase()
产生了以下错误:
TypeError:在对象Johnson中找不到函数toUpperCase
。调用
toString()
可以消除错误。@Dave您应该使用
e.parameters.intraction\u patient\u lname[0]。toUpperCase()
明白了。因此使用
e.params
时访问值的方式确实需要与使用
e.param
时不同。是的,引用第一个数组项(实际上是
字符串
比转换数组更有意义。感谢您的指导。
var params = e.parameter
var params = e.parameters;//modified
<script>
  function getCheckedBoxes(chkboxName) {
  var checkboxes = document.getElementsByName(chkboxName);
  var rowsToArchive = [];
  for (var i=0; i<checkboxes.length; i++) 
  {
     if (checkboxes[i].checked) 
     {
        rowsToArchive.push(Number(checkboxes[i].value));
     }
  }
  google.script.run
    .withSuccessHandler(setResponse)
    .archiveSelectedRows(rowsToArchive);
}
</script>