你能否建议一个更好的方法来使用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();
}
任何和所有帮助都很受欢迎,理想情况下是对我当前解决方案的修复,但也愿意一起尝试新方法。
答案 0 :(得分:1)
网址的最大长度因浏览器而异,这适用于您可以使用data:
样式请求处理的请求大小。
一个繁琐但易于应用的修复方法是将内容作为POST数据传递给服务器,并让它以非常简单的echo $_POST['csvData'];
返回 - 但只对原型做一些微不足道的事情,它不是一个真正可行的解决方案!