JavaScript语法错误 - 未知原因

时间:2013-10-28 10:30:07

标签: javascript php csv

你能否建议一个更好的方法来使用JavaScript创建一个.CSV文件而不是我的方法,这是我在搜索之前的线程后找到的最好的方法。在我开始向数据数组中添加大量行和大量行之前,一切都非常好,如下所示。

var data = 
[
  ["Thermal Store Summary:"] + "\n",
  ["Cylinder:", "", cylinder, "", cylinder2] + "\n",
  ["Heat Exchanger:", "", heatex, "", heatex2] + "\n",
  ["Immersion Heaters:", "", heater, "", heater2] + "\n", 

  **// About 30 or so entries with no problem, didn't work with any more **
];

以下是存储选择菜单选项的id和值的变量。

var cylinder = document.getElementById("heatex").options[document.getElementById("heatex").selectedIndex].id;
var heatex = document.getElementById("heatex").options[document.getElementById("heatex").selectedIndex].id;
var heater = document.getElementById("heater").options[document.getElementById("heater").selectedIndex].id;
var cylinder2 = document.getElementById("cylinder").options[document.getElementById("cylinder").selectedIndex].value;
var heatex2 = document.getElementById("heatex").options[document.getElementById("heatex").selectedIndex].value
var heater2 = document.getElementById("heater").options[document.getElementById("heater").selectedIndex].value

这是当前创建.CSV文件的代码:

var csvContent = "data:text/csv;charset=utf-8,";
data.forEach
(
  function(infoArray, index)
  {
    dataString = infoArray;
    csvContent += index < infoArray.length ? dataString+ "" : dataString;
  }
); 

encodedUri = encodeURI(csvContent);

至于下载本身,我曾经在最后自动下载,但在我尝试添加超过30个条目后它停止了。我将代码移动到一个单独的函数(由一个按钮调用),强制下载失败,因为“没有文件”。

function download_csv()
  {
    var link = document.createElement("a");
    link.setAttribute("href", encodedUri);
    link.setAttribute("download", "quote.csv");
    link.click();
  }

任何和所有帮助都很受欢迎,理想情况下是对我当前解决方案的修复,但也愿意一起尝试新方法。

1 个答案:

答案 0 :(得分:1)

网址的最大长度因浏览器而异,这适用于您可以使用data:样式请求处理的请求大小。

一个繁琐但易于应用的修复方法是将内容作为POST数据传递给服务器,并让它以非常简单的echo $_POST['csvData'];返回 - 但只对原型做一些微不足道的事情,它不是一个真正可行的解决方案!