Jquery 如何使用自己的数据正确下载CSV?
我有一个我正在编写的小插件,它基本上从facebook API中提取信息,循环,从我想要的数据中创建一个格式化字符串,并在运行后强制下载。然而,据我所知,我正在正确格式化字符串,但除非我很愚蠢,否则我无法打开csv,很可能是这样 演示: 但是,这里有一个非常简单的示例,我如何格式化我的响应我正在格式化我的响应:Jquery 如何使用自己的数据正确下载CSV?,jquery,string,csv,download,Jquery,String,Csv,Download,我有一个我正在编写的小插件,它基本上从facebook API中提取信息,循环,从我想要的数据中创建一个格式化字符串,并在运行后强制下载。然而,据我所知,我正在正确格式化字符串,但除非我很愚蠢,否则我无法打开csv,很可能是这样 演示: 但是,这里有一个非常简单的示例,我如何格式化我的响应我正在格式化我的响应: var string = "a","b","c","d","e","f","etc"; 据我所知,这是csv文件所期望的,但当我将该信息强制输入窗口时,它甚至无法工作。请在小提琴顶部附
var string = "a","b","c","d","e","f","etc";
据我所知,这是csv文件所期望的,但当我将该信息强制输入窗口时,它甚至无法工作。请在小提琴顶部附近使用open命令,而不是将自定义字符串传递给它
我知道这是一个相当大的代码块,但我不确定我还能在这里做什么
即使我运行:window.opendata:text/csv;charset=utf-8,+escapea、b、c、d、e、f等直接下载并打开csv,但没有数据
任何帮助都会很好 您有两个问题: 1您下载得太早了。FBAPI调用是ajax aynch调用,所以只有在成功后才需要下载 2检查response.length,response是一个对象,它没有length属性 3使用window.open下载csv,您可以尝试使用HTML5锚下载属性 您可以通过以下方式进行操作:
for (var i = 0; i < ids.length; i++) {
FB.api(ids[i], 'get', function (response) {
if (response) {
//csvString = toCsv(response);
csvString += (hasRun == false ? getArrayValue(response, true) : getArrayValue(response, false));
console.log(csvString);
hasRun == true;
}
$('#keys').html(csvString);
var tmpAnc=document.createElement('a');
tmpAnc.textContent='download';
tmpAnc.download="myFileName.csv";
tmpAnc.href='data:text/csv;charset=utf-8,'+escape(csvString);
tmpAnc.click();
});
//updateprogressBar(i + 1, ids.length);
}
您有两个问题: 1您下载得太早了。FBAPI调用是ajax aynch调用,所以只有在成功后才需要下载 2检查response.length,response是一个对象,它没有length属性 3使用window.open下载csv,您可以尝试使用HTML5锚下载属性 您可以通过以下方式进行操作:
for (var i = 0; i < ids.length; i++) {
FB.api(ids[i], 'get', function (response) {
if (response) {
//csvString = toCsv(response);
csvString += (hasRun == false ? getArrayValue(response, true) : getArrayValue(response, false));
console.log(csvString);
hasRun == true;
}
$('#keys').html(csvString);
var tmpAnc=document.createElement('a');
tmpAnc.textContent='download';
tmpAnc.download="myFileName.csv";
tmpAnc.href='data:text/csv;charset=utf-8,'+escape(csvString);
tmpAnc.click();
});
//updateprogressBar(i + 1, ids.length);
}
如果您使用的是口音,请考虑PuffEnter UFFEF
我用上面的文字做了一些小改动。这是因为如果没有这个,你就没有BOM的UTF-8,如果你添加了这个,它将适用于pt br和其他使用重音符号的语言tmpAnc.href='data:text/csv;字符集=utf-8、\ufeff'+escapecsvString > P >如果你使用重音,请考虑Prime\UFFEF 我用上面的文字做了一些小改动。这是因为如果没有这个,你就没有BOM的UTF-8,如果你添加了这个,它将适用于pt br和其他使用重音符号的语言
tmpAnc.href='data:text/csv;字符集=utf-8、\ufeff'+escapecsvString 啊,当然,非常感谢,新台词应该很简单:再次感谢!你介意我问一下window.open命令和创建锚的方式有什么区别吗?@ShannonHochkins这是我第一次从客户端下载真正的文件。不知何故,window.open不起作用。所以尝试了这个选项创建一个临时锚标记,但仍然有效,只需在不同的浏览器中检查一次。@ShannonHochkins让我用window.open玩arnd,它似乎在更改某些内容后没有下载文件,但没有文件名…好的,我现在遇到的问题是,这是因为我需要多次调用'FB'api,以便不断添加到变量csvString,它会反复尝试下载文件,而不是生成字符串,然后再下载,你能想出一个方法让它工作吗?啊,当然,非常感谢,新台词应该很简单:再次感谢!你介意我问一下window.open命令和创建锚的方式有什么区别吗?@ShannonHochkins这是我第一次从客户端下载真正的文件。不知何故,window.open不起作用。所以尝试了这个选项创建一个临时锚标记,但仍然有效,只需在不同的浏览器中检查一次。@ShannonHochkins让我用window.open玩arnd,它似乎在更改某些内容后没有下载文件,但没有文件名…好的,我现在遇到的问题是,这是因为我需要多次调用'FB'api,以便不断添加到变量csvString,它会反复尝试下载文件,而不是生成字符串,然后再下载,你能想出一个方法让它工作吗?