Javascript 将js对象转换为csv不起作用,不会显示任何错误
我正在尝试使用jqueryforeach将js对象转换为csv,下面是该对象的外观 在对象0中,它有电子邮件:farhana@farhana.com全名:法哈纳 我遵循了stackover flow中的一个示例,我认为它可以工作,但是CSV文件没有下载,也没有显示任何消息 这是密码Javascript 将js对象转换为csv不起作用,不会显示任何错误,javascript,jquery,csv,knockout.js,Javascript,Jquery,Csv,Knockout.js,我正在尝试使用jqueryforeach将js对象转换为csv,下面是该对象的外观 在对象0中,它有电子邮件:farhana@farhana.com全名:法哈纳 我遵循了stackover flow中的一个示例,我认为它可以工作,但是CSV文件没有下载,也没有显示任何消息 这是密码 self.downloadCSV = function(){ $.ajax({ type: 'GET', url: BASEUR
self.downloadCSV = function(){
$.ajax({
type: 'GET',
url: BASEURL + 'index.php/admin/getcsv/' + auth ,
contentType: 'application/json; charset=utf-8',
})
.done(function(docs) {
if(docs == null){
alert('file not found for csv');
}else{
// Here is where the foreach and storing to csv starts.
console.log(docs);
var csvContent = "data:text/csv;charset=utf-8,";
$.each(docs, function (index, doc) {
var dataString = doc.join(",");
csvContent += index < doc.length ? dataString+ "\n" : dataString;
});
var encodedUri = encodeURI(csvContent);
window.open(csvContent)
}
})
.fail(function(xhr, status, error) {
alert(error);
})
.always(function(data){
});
}
没有错误,因此不确定要调试什么:需要帮助。window.opencsvContent没有任何功能,因为它不是URL。
您需要创建一个Blob来下载内容
另外,从json到csv的转换也是错误的。doc.join,仅当doc是一个数组,但您的图片显示它是一个对象时才起作用,因此您需要以不同的方式进行操作
var docs=[{name:'test',id:22,emal:'test@test.com'},{name:'test2,sample',id:2122,emal:'test2@test.com'},{name:'test3',id:2223.23,emal:'test3@test.com' }];
//将js对象数组转换为csv字符串
//如果您的文档是一个对象
var csv=docs.reducestr,doc=>str+='+Object.valuesdoc.join','+'\r\n','+Object.keysdocs[0].join','+'\r\n';
//如果您的文档是数组
//var csv=docs.reducestr,doc=>str+='+doc.join','+'\r\n';
//下载csv字符串作为blob
var blob=new blob[csv],{'type':'application\/octet stream'};
var a=document.createElement'a';
a、 href=window.URL.createObjectURLblob;
a、 下载='docs.csv';
a、 点击;
a、 移除;你的console.logdocs是什么;show?@JasonSpake第一张图片为答案,我目前无法在=>中的代码中使用箭头符号。有没有办法改变这一点,以便我可以直接使用js代码?好的,我已经修复了,但我正在使用您的代码,结果未定义,但不确定为什么。我替换了类似于var csv=docs.reduce函数str的代码,doc{str+='+Object.valuesdoc.join','+'\r\n','+Object.keysdocs[0].join','+'\r\n'};