Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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 EVE Online的谷歌应用程序脚本中的HTML错误_Javascript_Html_Google Apps Script - Fatal编程技术网

Javascript EVE Online的谷歌应用程序脚本中的HTML错误

Javascript EVE Online的谷歌应用程序脚本中的HTML错误,javascript,html,google-apps-script,Javascript,Html,Google Apps Script,我目前正在为EVE Online开发一个娱乐性的Google应用程序脚本(GAS),当我获得服务器端功能与客户端功能对话时,我遇到了麻烦。 HTML: 类型名称类型ID 函数onSuccess(输出){ document.getElementById(输出[0])。innerHTML=output[1]; }; 气体: 函数doGet(){ 返回HtmlService.createTemplateFromFile('Index').evaluate().setTitle('UMX Web

我目前正在为EVE Online开发一个娱乐性的Google应用程序脚本(GAS),当我获得服务器端功能与客户端功能对话时,我遇到了麻烦。 HTML:



类型名称类型ID 函数onSuccess(输出){ document.getElementById(输出[0])。innerHTML=output[1]; };
气体:

函数doGet(){
返回HtmlService.createTemplateFromFile('Index').evaluate().setTitle('UMX Web App');
};
函数包括(文件名){
返回HtmlService.createHtmlOutFromFile(文件名).getContent();
};
功能短名单(表格、表格){
var arr=转置(htmlotarray(table));
var项目=form.mat;
如果(isNaN(项目)){
var url='1〕https://www.fuzzwork.co.uk/api/typeid2.php?format=xml&typename=“+item.toString();
}否则{
var url='1〕https://api.eveonline.com/eve/TypeName.xml.aspx?ids=“+item.toString();
};
var xml=UrlFetchApp.fetch(url.getContentText();
var document=XmlService.parse(xml);
var name=document.getRootElement().getChild('result').getChild('rowset').getChild('row').getAttribute('typeName').getValue();
if(arr[0].indexOf(name)=-1&&name!=“未知类型”&&name!=“坏项”){
arr[0]。推送(名称);
arr[1].push(document.getRootElement().getChild('result').getChild('rowset').getChild('row').getAttribute('typeID').getValue());
};
var-str=arraytothtml(转置(arr));
返回['spn1',str]
};
函数arrayToHTML(arr){
var i=0;
var j=0;
var-str='';
而(i
问题似乎出现在提交按钮上,因为其他一切都正常工作。我一直在寻找一个解决办法,但提交按钮是我能得到的唯一入口点,它不会接受多个变量

问题似乎出现在提交按钮上,因为其他一切都正常工作。我一直在寻找一个解决办法,但提交按钮是我能得到的唯一入口点,它不会接受多个变量

让我们专注于此,忽略所有不相关的代码。基本问题:如何从表单到服务器端GAS函数获取多个输入

本例将演示表单对象与服务器的通信,方法是抛出一个包含所有接收参数的错误。客户端上的
errorHandler
alert
显示收到的错误消息

Index.html 运行此Web应用程序,以下是您的结果:

名为
input
的两个元素,
mat
mat2
通过
this.parent
参数传递给服务器函数
shortlist()
。由于在其clickHandler中调用
this.parent
的按钮包含在
frm1
表单中,因此该表单的所有输入元素都包括在内,并且可以在服务器端作为
shortlist()
输入
参数的命名属性引用。(不作为数组元素。)

这样做的结果是可以修改
shortlist()
函数:

function shortlist(input) {
  var item = input.mat;
  if ( isNaN(item) ) {
    var url = 'https://www.fuzzwork.co.uk/api/typeid2.php?format=xml&typename=' + item;
  } else {
    var url = 'https://api.eveonline.com/eve/TypeName.xml.aspx?ids=' + item.toString();
  };
  ...

你看到了什么结果?你期待什么?为什么您认为问题出在提交按钮上?请添加更多信息。一个奇怪的现象是,您使用两个参数(
this.parentNode
和一个字符串)从客户端调用
shortlist
,但服务器端将单个
input
参数视为数组。很抱歉,我希望结果是“spn1”中的表来添加新项,但如果它是错误项或已经在表中,则不这样做。我认为除了电子表格之外,GAS web应用程序中不可能有一个数据库,如果两个人同时使用它,这会导致问题,所以我希望我可以通过删除此表的innerHTML并附加它来获得它。我得到的结果是没有响应,但让我与故障处理程序检查一下。。。什么也没有。它甚至没有给我一个错误。另外,我在原始代码中犯了一个错误,没有按足够的“撤消”。修复。检查客户端javascript控制台-将有一个关于传递到服务器的参数的错误。当
表单
是一个参数时,它必须是唯一的参数。你不能像这样通过桌子。不过,您可以让clickHandler使用表单字段+表构建一个对象。更好的是,您可以将脚本放入电子表格,并将其用作数据库。或者您可以使用托管数据库。。。
function doGet() {
  return HtmlService.createTemplateFromFile('Index').evaluate().setTitle('UMX Web App');
};


function include(filename) {
  return HtmlService.createHtmlOutputFromFile(filename).getContent();
};


function shortlist(form,table) {
  var arr = transpose(htmlToArray(table));
  var item = form.mat;
  if ( isNaN(item) ) {
    var url = 'https://www.fuzzwork.co.uk/api/typeid2.php?format=xml&typename=' + item.toString();
  } else {
    var url = 'https://api.eveonline.com/eve/TypeName.xml.aspx?ids=' + item.toString();
  };
  var xml = UrlFetchApp.fetch(url).getContentText();
  var document = XmlService.parse(xml);
  var name = document.getRootElement().getChild('result').getChild('rowset').getChild('row').getAttribute('typeName').getValue();
  if ( arr[0].indexOf(name) == -1 && name != 'Unknown Type' && name != 'bad item' ) {
    arr[0].push(name);
    arr[1].push(document.getRootElement().getChild('result').getChild('rowset').getChild('row').getAttribute('typeID').getValue());
  };
  var str = arrayToHTML(transpose(arr));
  return ['spn1',str]
};


function arrayToHTML(arr) {
  var i = 0;
  var j = 0;
  var str = '<table>';
  while ( i < arr.length ) {
    str = str + '<tr>';
    while ( j < arr[i].length ) {
      str = str + '<td>' + arr[i][j] + '</td>';
      j += 1
    };
    str = str + '</tr>';
    j = 0;
    i += 1
  };
  str = str + '</table>';
  return str
};


function htmlToArray(str) {
  var arr1 = str.replace(/<tr>/g,'</tr>').split('</tr>');
  var arr2 = [];
  var i = 1;
  var j = 1;
  var x = [];
  while ( i < arr1.length ) {
    arr2.push([]);
    x = arr1[i].replace(/<td>/g,'</td>').split('</td>');
    while ( j < x.length ) {
      arr2[arr2.length - 1].push(x[j]);
      j += 2
    };
    j = 1;
    i += 2
  };
  return arr2
};


function transpose(input) {
  var output = [];
  var i = 0;
  var j = 0;
  while ( i < input[0].length ) {
    output.push([]);
    while ( j < input.length ) {
      output[i].push(input[j][i]);
      j += 1
    };
    j = 0;
    i += 1
  };
  return output
};

function direct(input) {
  return input
}
<form id="frm1" name = "mat_add">
  <input width="1000" type="text" name="mat" placeholder="Enter Item Here" /><br />
  <input width="1000" type="text" name="mat2" placeholder="Enter Quantity Here" /><br />
  <input type="button" value="Submit" name="mat_sub" onclick="google.script.run
                                                                           .withSuccessHandler(onSuccess)
                                                                           .withFailureHandler(onFailure)
                                                                           .shortlist(this.parentNode)" />
</form>

<script>
function onSuccess(output) {
  document.getElementById(output[0]).innerHTML = output[1];
};

function onFailure(error) {
  alert( error.message );
}
</script>
function doGet() {
  return HtmlService.createTemplateFromFile('Index').evaluate().setTitle('UMX Web App');
};

function shortlist(input) {
  reportErr(JSON.stringify(input,null,2))
}

function reportErr(msg) {
  throw new Error( msg );
}
function shortlist(input) {
  var item = input.mat;
  if ( isNaN(item) ) {
    var url = 'https://www.fuzzwork.co.uk/api/typeid2.php?format=xml&typename=' + item;
  } else {
    var url = 'https://api.eveonline.com/eve/TypeName.xml.aspx?ids=' + item.toString();
  };
  ...