使用Google应用程序脚本将数组传递给客户端函数
Passing an array to client side function using Google apps script?
HTML
<html>
<table>
<tr>
<select id="Ultra" onchange="getForm()">
<option value="0.0">1</option>
<option value="1.0">2</option>
<option value="2.0">3</option>
<option value="3.0">4</option>
</select>
</tr>
<tr>
<td id="demo">
<script>
function getForm()
{
google.script.run.withSuccessHandler(myFunction).myFuncti();
}
function myFunction(arry)
{
var x = document.getElementById("Ultra").value;
for(i=0;i<arry.length;++i)
{
if(arry[i][0] == x)
{
var a = arry[i][1];
}
document.getElementById("demo").innerHTML = a;
}
}
</script>
</td>
</tr>
</table>
</html>
我使用select创建了一个下拉菜单,之后我调用客户端函数getForm()
。在那个函数中,我使用google.script.run
类调用服务器端函数myFuncti()
,这将返回我传递给客户端函数myfunction()
的数组作为参数。
如果使用Logger.log()
,则服务器端函数将成功返回数组值!!
这是一个2D阵列。。我把它按正确的方式传给myFunction()
吗?
如果你不能理解问题中的任何内容,请添加一条评论,我会回复
这就是代码需要的样子,注意使用console.log()在客户端进行调试(CTRL-SHFT-I通常会在浏览器中打开开发者控制台窗口):
index.html
<div>
<select id="Ultra" onchange="getForm()">
<option value="1.0">1</option>
<option value="2.0">2</option>
<option value="3.0">3</option>
<option value="4.0">4</option>
</select>
<p id="demo"></p>
</div>
<script>
function getForm() {
google.script.run.withSuccessHandler(myFunction).myFuncti();
}
function myFunction(arry) {
var x = document.getElementById("Ultra").value;
var y = parseInt(x, 10);
var i = 0;
var a;
console.log('x (string) = ' + x);
console.log('y (number) = ' + y);
console.log(arry);
for (; i < arry.length; i++) {
a = arry[i];
console.log('a = ' + a);
if (a === y) {
console.log('a === y');
document.getElementById("demo").innerHTML = a;
}
}
}
</script>
code.gs
function doGet(form) {
return HtmlService
.createHtmlOutputFromFile('index');
}
function myFuncti() {
return [1, 2, 3, 4];
}
这是一个工作演示和脚本。
根据文档,您可以简单地从服务器端函数返回Array,并在客户端直接使用Javascript。
相关文件:https://developers.google.com/apps-script/guides/html/communication#parameters_and_return_values
使用浏览器的开发工具调试客户端Javascript
一些猜测:
您的问题可能与您在客户端访问阵列的方式有关,可能if(arry[i][0] == x)
永远不匹配,或者您在var a = arry[i][1];
行对索引1而不是0的引用不正确
此外,您在if的大括号内声明变量"a",但随后在这些大括号外赋值,也许您的意思是:
for(i=0;i<arry.length;++i)
{
if(arry[i][0] == x)
{
var a = arry[i][1];
document.getElementById("demo").innerHTML = a;
}
}
相关文章:
- 如何在从客户端接收数据时从本机方法触发javascript函数?
- 如何从服务器向客户端调用函数?(远程功能调用)
- 当客户端将两个按钮的javascript函数参数修改为相同时,SQL/PHP会更新多行
- 正在使用在服务器端或客户端执行的 Jquery 函数
- 将客户端 ID 从 GridView 中传递给 JavaScript 函数
- 使用Google应用程序脚本将数组传递给客户端函数
- 无法访问字段'通过aspx页面上的javascript函数传递来自代码隐藏中函数调用的客户端id的s值(页面加载
- 使用sails.js中的beforeConnect函数获取客户端套接字
- 将来自codeehind的值返回到客户端的jquery函数中
- 调用客户端函数
- 如何在客户端函数行中创建的 RadGrid 的命令项模板中查找控件
- 在 SQL 依赖项更改后调用客户端函数
- SignalR-Hub在IIS停止后,启动将不再调用客户端函数
- JavaScript客户端函数不触发ASP自定义验证器
- CustomValidator客户端函数对空文本框不触发
- 如何在流星中构建我自己的客户端函数
- 在Meteor中延迟从服务器返回变量到客户端函数
- 如何从asp.net调用客户端函数
- 在客户端函数(Javascript)中调用服务器端方法
- 客户端函数返回HTML代码而不是服务器端返回值