我正在通过ajax调用从客户端上的服务器加载csv文件并解析它以获取行列表。但是,我的代码找不到换行符,它将整个文件视为1行。
这是我的代码
$.ajax({ url: "./data.csv", success: function(data) {
var lines = data.split("\n");
// I also tried this but did not work
// var lines = data.split(/\r\n|\n/);
console.log(lines.length); // output is 1
}
});
这是我的CSV(注意:分隔符是; 而不是,,但这不应该导致此问题)
category;title;description;price;additional
Breakfast;Traditional Breakfast;flour tortilla, scrambled eggs, jack cheese, mild sauce;3.95
Breakfast;Traditional Breakfast;flour tortilla, scrambled eggs, sausage jack cheese, mild sauce;5.95
有什么想法吗?
答案 0 :(得分:1)
您是否检查过CSV文件的格式?对于换行,它可能使用LF而不是CF.试试这个:
$.ajax({url: "./data.csv", success: function(data) {
var lines = data.replace("\r\n", "\n").replace("\r", "\n").split("\n");
// the rest of your code
});
答案 1 :(得分:0)
我不确定您使用哪种语言进行服务器端编码。我刚刚在ASP.NET mvc和Ajax中编写了一些代码来为您的问题找到解决方案。您可以根据需要更改代码。
public class HomeController : Controller
{
//
// GET: /Home/
public JsonResult _ReadCSVFiles()
{
string[] values = LoadCsv(@"F:\a.csv");
return Json(values, JsonRequestBehavior.AllowGet);
}
private string[] LoadCsv(string filename)
{
string fileContent = System.IO.File.ReadAllText(filename);
fileContent = fileContenet.Replace('\n', '\r');
string[] lines = fileContent.Split(new char[] { '\r' },
StringSplitOptions.RemoveEmptyEntries);
return lines;
}
}
在ajax中
$.ajax({
url: "/Home/_ReadCSVFiles",
success: function (doc) {
alert(doc.length)
}
});